linux操作系统内核架构及实现
操作系统简介:
操作系统是计算机的大脑,主管并控制计算机操作、运用和运行软硬件资源,提供公共服务程序,是计算机系统的内核和基石,操作系统主要负责计算机系统的一些基本事物,包括内存的管理与配置、决定系统资源供需的优先次序(调度)、控制输入输出设备、操作网络与管理文件系统等,当前业界的OS种类多样,不同的操作系统应用于不同的场景,windows和linux是其中应用最为成熟的操作系统实现,前者主要用于个人计算机,具有丰富的系统生态及用户实现,后者主要用于服务器场景,其内核也在手机等场景广泛应用,另外由于linux的开源生态,它也成为了很多操作系统的衍生根,并成为软件开发者学习操作系统原理实现的不二选择。
linux内核体系结构:
操作系统是计算机系统的核心,而内核又是操作系统的核心,它负责管理系统的进程、内存、设备驱动程序、文件和网络,保证了系统能够协调稳定的为用户态程序提供服务, 参考linux内核完全注释介绍,linux内核体系结构图如下所示:

图:linux内核系统模块结构及相互依赖关系
由图可知,linux内核体系结构可以分为多个模块分析,它们分别是:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块,各个模块间彼此独立却又相互关联。
进程调度模块又被称为进程调度子系统(Processing management),主要负责任务(进程或线程)对CPU资源的使用,采用特定的调度策略使各进程能够公平合理地访问CPU,同时保证内核能够及时地执行硬件操作。linux所有模块都与调度模块存在依赖关系,进程调度是linux内核中最重要的子系统,对调度子系统分析解读,需要从中断和软中断、定时器和高精度定时器、抢占和非抢占、实时和普通进程调度、锁和并发等角度深入分析,它们彼此关联,共同保证了调度子系统的正常运行。在性能优化方面,linux通过负载追踪、负载均衡等手段进行调度性能优化,并提供tracepoint机制,为内核调度提供追踪调试的手段,结合ftrace、perf、rt-app、systrace、lisa等工具,可以很方便的完成linux调度子系统的问题定位与性能优化。在实现方面,linux调度采用了面向对象的设计思想,与模版方法类似,linux支持不同的调度策略,内核以模块化的方法实现这些策略,调度策略以调度类为载体,所有的调度类设计具有相同的结构和对外接口,不同的调度类之间的代码不需要交互,每个进程刚好属于某个调度类,上层通过通用调度器实现接口抽象,通用调度器不涉及进程管理,调度工作委托给具体的调度类,也就是说通用调度类不涉及具体的调度方法。
内存管理模块又被称为内存管理子系统(Memory management),用于确保所有的进程能够安全地共享机器主内存区,同时Linux内存管理子系统还支持虚拟内存管理方式,使linux的进程可以使用比实际内存空间更多的内存容量,并且可以利用文件系统把暂时不用的内存数据块交换到外部存储设备上去,当需要时再交换回来。通常程序在寻址过程中使用的都是虚拟地址,该地址由段和偏移值构成,并不能直接用来寻址物理内存地址,因此需要一种地址变换机制,虚拟地址向物理地址的转换就是内存管理的主要功能之一,内存管理的另一个主要功能是内存的寻址保护机制。对内存管理模块进行分析解读,需要搞明白内存分页管理机制,了解linux中的内存分配与管理方法,需要从段和偏移值、分页与二级页表、slab分配器、虚拟地址与物理地址、内存地址空间的构成等多个角度进行分析。
文件系统模块用于支持对外部设备的驱动和存储,虚拟文件系统通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同实现细节,从而提供并支持与其他操作系统兼容的多种文件系统个数。
进程间通信模块(IPC)用于支持多种进程间的信息交换方式。
网络接口模块提供对多种网络通信标准的访问并支持多种网络硬件。
浙公网安备 33010602011771号