您的位置:首页 > 运维架构 > Linux

深入理解Linux内核个人小结1---绪论

2012-08-31 10:37 656 查看
常见到的概念: GNU--GNU is not Unix, GPL: Generic Public License Linux=Unix内核+Linux自己的系统程序。

通用的标准如POSIX都指定了编程接口的规范,而对其内核内部的结构无要求。

一. Linux内核的基本结构

1. Linux内核是单块结构并支持编译及静态链接的内核:

单块内核:指其是一个复杂、庞大的自我完善的程序,由几个逻辑上相互独立的成分构成。其在同一个地址空间上实现所有复杂的低阶操作系统控制代码。

支持编译及静态链接:即操作系统可以动态地装载和卸载部分模块的代码。

<1>:扩展---内核的常见分类

单块内核:一种最常见的内核结构设计,由于在同一地址空间上实现了所有素的的低阶操作系统控制代码,因而其效率微内核更高些。

微内核: 其目标是将系统服务的实现和系统的基本操作规则分离开来,不同的功能可由分布在不同地方的模块来完成。这样的设计使内核中最核心的部分设计更加简单。一个服务组件的崩溃不会导致整个系统的崩溃,内核只需要重启这个组件即可。目前微内核结构主要用于机器人和医疗器械等嵌入式设计中。

混合内核:混合内核实质上是微内核,只是其让一些微内核结构运行在用户空间的代码运行到了内核空间,这样内核的运行效率更高些。Windows的操作系统都是采用此种设计。

外内核:也被称作是纵向结构操作系统,是一种比较低端的设计。其理念是让用户程序的设计者来决定硬件接口的设计。外内核本身很小,它通常只负责系统保护和系统复用等相关的服务。

2. 内核(操作系统的作用):

向下:与硬件部分交互,对硬件资源进行管理

向上:为应用程序提供执行环境。

3. 可重入内核: 若干进程可同时运行于内核态----同步与临界区机制作为保障

内核控制路径:表示内核处理系统调用、异常或中断所执行的指令序列。

内核线程:只运行与内核空间,不与用户进行交互,系统启动后一直处于活跃状态。(往往充当后台保护线程)

用户态进程不能直接与底层硬件进行交互,一般要通过相应的系统调用进入内核间接的完成交互。

现代CPU大都包含了可直接将虚拟地址变换成物理地址的硬件电路。

二. Linux 的文件

五大文件类型: 普通文件、目录文件、软连接文件、设备文件(字符设备、块设备)、套接字文件(管道、命名管道、网络套接字)

1.软连接文件与硬链接文件的区别:

软连接:类似于windiws下的快捷方式,但是其拥有自己的文件索引节点(虽然其中只存放目标的路径无其他实际内容)。创建无限制条件。

硬链接:与其他硬链接共享同一个文件索引节点。两个限制:不允许对目录创建硬链接、只有在同一文件系统中的文件才允许创建硬链接。

文件的索引节点包含了文件系统处理文件所需要的所有信息。而文件内容仅仅包含字符(或流)序列,无任何控制信息。

2. 三种特殊的访问权限

suid:执行一个文件时让执行者拥有创建者的权限。

sgid: 执行一个文件时让执行者拥有创建者组所具有的权限。

sticky:设置了sticky标志的可执行文件相当于向内核发送了一个请求,当程序执行结束以后,其依然保留在内存中。

三. 僵尸进程

进程调用exit()后并未真正的消亡,而是保留了一个僵尸进程的数据结构。其相关的资源几乎全部释放掉了,但在进程列表中依然保留了一个位置(进程描述符)用来记录其退出状态等信息供其父进程来收集。

进程消亡的正顺序如下

子进程-----------------(SIGHLD)-------------------->父进程

父进程-----------------(wait)-------------------------->子进程

若父进程无处理SIGHLD信号的函数,或者在收尸前父进程已经消亡。则进程成为僵尸进程。

僵尸进程最后会成为init进程的子进程,init进程对僵尸进程有两种处理方式:

<1>. 周期性的扫描僵尸进程并进行消除。

<2>. 一开始就拒绝接受其为子进程,而直接将其进行人道毁灭。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: