Linux 基础知识
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 基础知识相关的知识,希望对你有一定的参考价值。
一、计算机的组成及其功能
硬件
运算器的功能:实现算术运算和逻辑运算(与控制器组成CPU)。
存储器的功能:将输入设备接收到的信息以二进制的数据形式存到存储器中。
控制器的功能:将指令逐条从存储器中取出,经译码分析后向全机发出相应的操作控 制信号作用于其他部件,使各部件有条不紊地协调工作(与运算器组成CPU)。
输入设备的功能 :将数据、程序、文字符号、图象、声音等信息输送到计算机中。
输出设备的功能 :将计算机的运算结果或者中间结果打印或显示出来。
软件
操作系统
应用系统
二、内核功能以及作用
一种开源的类Unix操作系统宏内核。
基本系结构
- 系统调用接口:提供了某些机制执行从用户空间到内核的函数调用。
- 进程管理:重点是进程的执行,还包括处理活动进程之间共享 CPU 的需求。
- 内存管理:管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。
- 虚拟文件系统:为文件系统提供了一个通用的接口抽象。VFS 在 SCI 和内核所支持的文件系统之间提供了一个交换层。
- 网络堆栈:IP)是传输协议(通常称为传输控制协议或 TCP)下面的核心网络层协议。TCP 上面是 socket 层,它是通过 SCI 进行调用的。
- 设备驱动程序:能够运转特定的硬件设备。
- 依赖体系结构的代码:包含了各种特定于体系结构的子目录(共同组成了 BSP)
三、常见Linux的发行版,不同发行版之间的联系与区别
- Redhat系列:RHEL、Fedora CentOS
- Debian系列:Debian和Ubuntu
- Gentoo
- SuSE
- android
四、常见的开源协议(GPL,LGPL, BSD,Apache等)以及开源协议的区别
GPL(GNU General Public License):
GPL协议的主要内容是只要在一个软件中使用("使用"指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的"传染性"。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。
由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。
LGPL(GNU Lesser General Public License):
LGPL 是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。
但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品
BSD(Berkeley Software Distribution)协议:
1、如果二次发布的产品中包含源代码,则在源代码中必须带有原来的代码中的BSD协定;
2、如果二次发布产品是二进制格式的库或程序,则需要在发布的文档或版权声明中说明包含原来的代码中的BSD协定;
3、不可以用开源代码的作者或组织,以及原来的产品的名字做市场推广;
Apache Licence:
Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似:
1、需要给代码的用户一份Apache Licence
2、如果你修改了代码,需要在被修改的文件中说明。
3、在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
4、如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。
五、Linux的哲学思想
- 一切皆文件
- 单一小程序
- 避免与用户交互
- 提供机制,而非策略
六、linux目录结构以及目录结构命名规定
Linux目录结构(倒置树状结构):
文件系统的层次结构标准FHS(Filesystem Hierarchy Standard)
/bin:所有用户可用的基本命令程序文件;
/sbin:供系统管理使用的工具程序;
/boot:引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等;
/dev:存储特殊文件或设备文件;
设备有两种类型:字符设备(线性设备)、块设备(随机设备);
/etc:系统程序的配置文件,只能为静态;
/home:普通的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME;
/root:管理员的家目录;可选;
/lib:为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块
libc.so.*:动态链接的C库;
ld*:运行时链接器/加载器;
modules:用于存储内核模块的目录;
/lib64:64位系统特有的存放64位共享库的路径;
/media:便携式设备挂载点,cdrom, floppy等;
/mnt:其它文件系统的临时挂载点;
/opt:附加应用程序的安装位置;可选路径;
/srv:当前主机为服务提供的数据;
/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限;
/usr:usr Hierarchy,全局共享的只读数据路径;
bin, sbin
lib, lib64
include:C程序头文件;
share:命令手册页和自带文档等架构特有的文件的存储位置
local:另一个层级目录;
X11R6:X-Window程序的安装位置
src:程序源码文件的存储位置
/usr/local:Local hierarchy,让系统管理员安装本地应用程序;也通常用于安装第三方程序;
/var:/var Hierarchy,存储常发生变化的数据的目录;
cache Application cache data
lib Variable state information
local Variable data for /usr/local
lock Lock files
log Log files and directories
opt Variable data for /opt
run Data relevant to running processes
spool Application spool data
tmp Temporary files preserved between system reboots
/proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/, 因此其完整路径为/proc/sys/net/ipv4/ip_forward;
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux设备提供一种统一模型的的接口;
Linux目录命令规定:
严格区分字符大小写:file1, File1, FILE1
目录也是文件,在同一路径下,两个文件不能同名;
支持使用除/以外的任意字符;
最长不能超过255个字符;
以上是关于Linux 基础知识的主要内容,如果未能解决你的问题,请参考以下文章