Linux内核模式
目前,操作系统内核的结构模式主要可分为整体式的单内核模式和层次式的微内核模式。而Linux0.11是 采用了单内核模式。单内核模式的主要优点是内核代码结构紧凑,执行速度快,不足之处主要是层次结构性不强。
在单内核模式的系统中,操作系统所提供服务的流程为:应用主程序使用指定的参数值执行系统调用指令(init x80),使CPU从用户态(User Mode)切换到核心态(Kernel Model),然后操作系统根据具体的参数值调用特定的系统调用服务程序,而这些服务程序则根据需要在底层的一些支持函数以完成特定的功能。在完成了应用程序所需要的服务后,操作系统又从核心态切换回应用态,返回到应用程序中继续执行后面的指令。因此概要地讲,单内核模式的内核也可以粗略地分为三个层次:调用服务的主程序层,执行系统调用的服务层和支持系统调用的底层函数。
2.2 Linux内核系统体系结构
Linux 内核主要由5个模块构成,它们分别是:进程调度模块,内存管理模块,文件系统模块,进程间通信模块和网络接口模块。
进程调度模块用来负责控制进程对CPU资源的使用。所采取的调度策略是各进程能够公平合理地访问CPU,同时保证内核能及时地执行硬件操作。内存管理模块用于确保所有进程能够安全地共享机器主内存区,同时,内存管理模块还支持虚拟内存管理方式,使得Linux支持进程使用比实际内存空间更多的内存容量。并可以利用文件系统把暂时不用的内存数据块会被交换到存储设备上去,当需要时再换回来。文件系统的模块用于支持对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。从而提供并支持与其他操作系统兼容的多种文件系统格式。进程间通信模块子系统用于支持多种进程间的信息交换方式。网络接口模块提供对多种网络通信标准的访问并支持许多网络硬件。
这几个模块之间的依赖关系如下图
由图可以看出,所有的模块都与进程调度模块存在依赖关系。因为它们都需要依赖进程调度程序来挂起(暂停)或重新运行它们的进程。通常,一个模块会在等待硬件操作期间被挂起,而在操作作完后才继续运行。