1.内核的划分
1.术语解释
- 时钟管理:利用时钟断实现计时功能。
- 原语是一种特殊的程序,具有原子性。也就是说,这段程序的运行必须一气呵成,不可被“中断”
- Ubuntu、Centos的开发团队,其主要工作是实现非内核功能,而内核都是用了Linux内核。
内核是操作系统最基本、最核心的部分。
实现操作系统内核功能的那些程序就是内核程序。
2.注意
- 操作系统内核需要运行在内核态
- 操作系统的非内核功能运行在用户态
2.大内核(又称:宏内核/单内核)
将操作系统的主要功能模块都作为系统内核,运行在核心态。
注意:变态(用户态和内核态之间的变换)的过程是有成本的,
要消耗不少时间,频繁地变态会降低系统性能
1.特性
- 所有的系统功能都放在内核里(大内核结构的OS通常也采用了"模块化"的设计思想)
2.优缺点
- 优点:性能高,内核内部各种功能都可以直接相互调用
- 缺点:内核代码庞大,结构混乱,难以维护;大内核中某个功能模块出错,就可能导致整个系统崩溃
典型的大内核/宏内核/单内核操作系统:Linux、UNIX
3.微内核
只把最基本的功能保留在内核。
1.特性
只把中断、原语、进程通信等最核心的功能放入内核。
进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态。
2.优点
- 优点:内核功能少,结构清晰,方便维护;
- 内核外的某个功能模块出错不会导致整个系统崩溃.
3.缺点
- 缺点︰性能低,需要频繁的切换用户态/核心态。
- 用户态下的各功能模块不可以直接相互调用,只能通过内核的"消息传递"来间接通信;
典型的微内核操作系统:Windows NT
4.分层结构
最底层是硬件,最高层是用户接口,每层可调用更低一层。
1.优点
- 便于调试和验证,自底向上逐层调试验证。
- 易扩充和易维护,各层之间调用接口清晰固定。
2.缺点
- 仅可调用相邻低层,难以合理定义各层的边界。
- 效率低,不可跨层调用,系统调用执行时间长。
5.模式化
1.特性
- 将内核划分为多个模块,各模块之间相互协作。
- 内核=主模块+可加载内核模块
- 主模块︰只负责核心功能,如进程调度、内存管理
- 可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核
2.优点
- 模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发
- 支持动态加载新的内核模块(如∶安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性
- 任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高
3.缺点
- 模块间的接口定义未必合理、实用
- 2.模块间相互依赖,更难调试和验证
6.外核
1.特性
- 内核负责进程调度、进程通信等功能,
- 外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全
2.优点
- 外核可直接给用户进程分配"不虚拟、不抽象的硬件资源,使用户进程可以更灵活的使用硬件资源
- 减少了虚拟硬件资源的"映射层",提升效率
3.缺点
- 降低了系统的一致性
- 使系统变得更复杂