Linux内核体系结构
Linux内核体系结构
一、操作系统
操作系统的架构
一个完整的操作系统主要由四部分组成:硬件层、操作系统内核层、操作系统服务层和用户应用程序层。
用户应用程序层:是指那些字处理程序,Internet浏览器程序。以及一些用户自己编写的应用程序。
操作系统服务层:是指那些向用户提供的服务被看做时操作系统部分功能的程序。比如X窗口系统、shell命令解释系统以及内核编程接口等系统程序。
操作系统内核层:主要用于对硬件资源的抽象和访问调度。与硬件之间交互,实现对硬件部件的编程控制和接口操作。
Linux内核模式
操作系统内核的结构模式主要分成整体式的单内核模式和层次式的微内核模式。
对于Linux 0.11内核,则是采用了单内核模式。
操作系统所提供服务的流程为:
应用程序使用指定的参数值执行系统调用命令,使CPU从用户态切换为内核态。
然后操作系统根据具体的参数值调用特定的系统调用服务程序。
服务程序根据需要调用底层的一些支持函数完成特定的功能。
完成应用程序所要求的服务之后,操作系统又使CPU从核心态转换为用户态。
因此,单内核也可粗略地分成三个层次:
- 调用服务的主程序层
- 执行系统调用的服务层
- 支持系统调用的底层函数
二、Linux内核系统体系结构
Linux 内核主要由5个模式构成,分别是:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。
进程调用模块:负责进程对CPU资源的使用。所采用的调度策略是各个进程能够公平合理地访问CPU,保证内核能及时地执行硬件操作。
内存管理模块:用于确保进程能够安全地共享机器主内存区。同时,内存管理模块还支持虚拟内存管理方式
。
文件系统模块:用于支持对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。
进程间通信模块:用于支持多种进程间的信息交换方式。
网络接口模块:提供对多种网络通信标准的访问并支持许多网络硬件。
Linux 内核中各个模块之间存在依赖关系。比如:
所有的模块都与进程调度模块存在依赖关系。因为它们都需要依靠进程调度程序来挂起或重新运行它们的进程。
进程调度子系统需要使用内存管理来调整一特定进程所使用的物理内存空间。
进程间通信子系统需要依靠内存管理器来支持共享内存通信机制。
除了模块之间的依赖关系,所有的这些模块还会依赖于内核中的通用资源。这些资源包括内核所有子系统都会调用的内存分配和收回函数,打印警告或出错信息函数以及一些系统调试函数。