一、内核结构
操作系统内核也有两种类别:大内核结构、微内核结构
大内核结构:也叫宏内核/单内核。将操作系统的主要功能模块都作为操作系统内核。大内核结构包括进程管理、存储器管理、设备管理等功能(第四层)和时钟管理、中断处理、原语(第五层)。
大内核优点:性能更高(CPU状态转换次数更少)
大内核缺点:内核代码庞大,结构混乱,难以维护
微内核结构:只将最基本的操作系统功能保留在内核内。包括时钟管理、中断处理和原语(第五层)。
微内核优点:内核功能少,结构清晰,易于维护
微内核缺点:性能低,CPU需要频繁地在内核态与用户态之间切换
补充:为什么大内核结构CPU状态切换次数更少?
如下图,如果一个应用程序需要请求操作系统服务,该服务同时涉及到进程管理、存储器管理以及设备管理,那么在大内核结构下,CPU只需要从用户态切换到内核态就可以使用这些服务,然后再切换回用户态,总共共需要2次切换;而在微内核结构下,每使用一种服务就需要切换两次,总共需要切换6次切换。
二、分层结构
最底层是硬件,最高层是用户接口。
高层可以调用相邻的用户接口。
分层结构优点:
1.便于调试和验证,自下向上逐层验证
2.易于扩充与维护,各层之间调用接口清晰固定
分层结构缺点:
1.难以合理定义各层之间的边界
2.效率低,仅可调用相邻低层,系统调用执行时间很长
三、模块化结构
将操作系统内核划分为多个模块,各个模块之间相互协作。
操作系统内核=主模块+可加载模块
主模块:负责操作系统核心功能,如进程调度,内存管理
可加载模块:可动态加载新模块到操作系统内核中,无需重新编译整个内核,如设备驱动程序
模块化结构优点:
1.模块间逻辑清晰,易于维护,确定模块间接口后可多模块开发
2.支持动态加载新的内核模块,增强系统的适应性
3.效率高,任意模块都可以调用其他模块
模块化结构缺点:
1.模块之间的接口普定义未必合理实用
2.模块间相互依赖,难以调试和验证
四、外核结构
外核负责为用户进程分配未经抽象的硬件资源,并且负责保证资源使用安全 。
什么是未经抽象的硬件资源?
即一片连续的存储空间,相比于不连续的空间使用效率更高。
外核结构优点:
1.可以直接给用户进程分配不虚拟、不抽象的硬件资源,用户进程更加灵活高效地使用硬件资源
2.减少虚拟硬件资源的映射层,提升效率(映射层:普通操作系统给用户进程分配的都是虚拟的硬件资源,比如虚拟内存,用户进程在访问自己的地址空间时只能提供虚拟地址,要想获得实际的物理地址,操作系统必须去查页表)
外核结构缺点:
1.降低了系统的一致性。有的进程分配了虚拟的地址,有的进程分配了实际的物理地址。
2.操作系统更加复杂