操作系统的体系结构
2025/8/15大约 3 分钟
操作系统的内核
如图所示,操作系统内核由以下几个部分组成:
进程管理、存储器管理、设备管理等功能
时钟管理
中断处理
原语
原语
原语是一种特殊的程序具有原子性,也就是说:这段程序的运行必须一气呵成,不可被“中断”
内核是操作系统最基本、最核心的部分实现操作系统内核功能的那些程序就是内核程序
操作系统中,内核需要运行在内核态,非内核功能运行在用户态
CPU 状态切换的过程是有成本的,要消耗不少时间,频繁地切换会降低系统性能
内核分为两种:
大内核 (宏内核)
将操作系统的主要功能模块都作为系统内核,运行在核心态
采用大内核的系统通常也采用了“模块化”的设计思想
大内核为图中标注为内核的部分
优点:高性能,内核内的各种功能都可以直接相互调用 👍
缺点:
- 内核代码庞大,结构混乱,难以维护 👍
- 大内核中的某个功能模块出错,可能导致整个系统崩溃 👍
微内核
只把最基本的功能保留在内核(中断、原语、进程通信等)
微内核只保留和硬件相关的部分
优点:
- 内核功能少,结构清晰,方便维护 👍
- 内核外的某个功能出错不会导致整个系统崩溃 👍
缺点:
- 需要频繁地在核心态和用户态之间切换,性能低;且内核内的各个功能不能直接相互调用,需要通过内核的“消息传递”来间接通信 👍
分层结构的内核
内核分多层,每层可单向调用更低一层提供的接口
优点:
- 便于调试和验证,自底向上逐层调试验证 👍
- 易扩充和易维护,各层之间调用接口清晰固定
缺点:
- 仅可调用相邻低层,难以合理定义各层的边界
- 效率低,不可跨层调用,系统调用执行时间长 👍
模块化的内核设计
将内核划分为多个模块,各模块之间相互协作。
内核 = 主模块 + 可加载内核模块 👍
主模块:只负责核心功能,如进程调度、内存管理等 👍
可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核 👍
优点:
- 模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发
- 支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强 OS 适应性 👍
- 任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高 👍
缺点:
- 模块间的接口定义未必合理、实用
- 模块间相互依赖,更难调试和验证
外核
内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源(比如连续的内存地址或连续的物理存储空间),且由外核负责保证资源使用安全 👍
优点:
- 外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源 👍
- 减少了虚拟硬件资源的“映射层”,提升效率 👍
缺点:
- 降低了系统的一致性
- 使系统变得更复杂
更新日志
2025/8/16 10:52
查看所有更新日志
792eb-于d765c-于b2611-于
