深入理解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>. 一开始就拒绝接受其为子进程,而直接将其进行人道毁灭。
通用的标准如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>. 一开始就拒绝接受其为子进程,而直接将其进行人道毁灭。
相关文章推荐
- 深入理解Linux内核个人小结4---中断和异常
- 深入理解Linux内核个人小结5---内核同步
- 深入理解Linux内核个人小结2---内存寻址
- 深入理解Linux内核个人小结3--进程
- 深入理解Linux内核个人小结8---内存区管理
- 深入理解Linux内核个人小结9---进程地址空间
- 深入理解Linux内核个人小结10---系统调用
- 深入理解Linux内核个人小结12---虚拟文件系统
- 《深入理解Linux 内核》 chap 1 绪论
- 【深入理解Linux内核】《第一章 绪论》笔记
- 深入理解Linux内核(一)
- 深入理解Linux网络技术内幕——用户空间与内核空间交互
- 《深入理解Linux 内核》chap 5 内核同步
- 深入理解 Linux 内核
- 读深入理解Linux内核 (第9章 进程地址空间, 第二部分 ---- 内存区域)
- 关于学习Linux的经典书籍 (深入理解Linux内核、Linux设备驱动程序等)
- 深入理解linux内核之(一)内存寻址
- Linux内核进程调度schedule深入理解
- 深入理解Linux内核-内核同步
- 深入理解Linux 内核 chp 2 内存寻址