目录
操作系统的体系结构
大内核(宏内核/单内核):
微内核:
分层法
模块化
操作系统的体系结构
大内核(宏内核/单内核):
将操作系统的主要功能模块都作为系统内核,运行在核心态。(大内核的OS通常也采用了“模块化”的设计思想)
优点:高性能,内核内部各种功能都可以直接相互调用
缺点:
1、内核代码庞大,结构混乱,难以维护
2、大内核中某个功能模块出错,就可能导致整个系统崩溃
微内核:
只把最基本的功能保留在内核。
优点:
1、内核小功能少、易于维护,内核可靠性高
2、内核外的某个功能模块出错不会导致整个系统崩溃
缺点:
1、需要频繁地在核心态和用户态之间切换,性能低。用户态下的功能模块不可以直接相互调用,只能通过内核的“消息传递”来间接通信。
2、用户态下的各功能模块不可以直接相互调用,只能通过内核的“消息传递”来间接通信。
tip:变态的过程是有成本的,要消耗不少时间,频繁地变态会降低系统性能。
分层法
将操作系统分为若干层,底层(层0)为硬件,顶层(层N)为用户接口,每层只能调用紧邻它的低层的功能和服务(单向依赖)。
优点:
1、便于调试和验证,自底向上逐层调试验证
2、易扩充和易维护,各层之间调用接口清晰固定
缺点:
1、仅可调用相邻低层,难以合理定义各层的边界
2、效率低,不可跨层调用,系统调用执行时间长
模块化
将内核划分为多个模块,各模块之间相互协作。
内核=主模块+可加载内核模块
主模块:只负责核心功能,如进程调度、内存管理。
可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核。
优点:
1、模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发
2、支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性。
3、任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高。
缺点:
1、模块间的接口定义未必合理、实用
2、模块间相互依赖,更难调试和验证。
内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。
优点:
1、外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源。
2、减少了虚拟硬件资源的“映射层”,提升效率。
缺点:
1、降低了系统的一致性。
2、使系统变得更复杂。
外核
内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。
优点:
1、外核可以直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更加灵活的使用硬件资源
2、减少了虚拟硬件资源的“映射层”,提升效率。
缺点:
1、降低了系统的一致性
2、使系统变得更加复杂