操作系统体系结构
操作系统体系结构
概述
- 操作系统内核需要运行在内核态。
- 操作系统的非内核功能运行在用户态。
操作系统内核
内核是操作系统最基本,最核心的部分。实现操作系统内核的功能的那些程序就是内核程序。
- 时钟管理:实现计时功能。
- 中断处理:负责实现中断机制。
- 原语:
- 是一种特殊的程序。
- 处于操作系统最底层,最接近硬件的部分。
- 这些程序的运行具有原子性——其运行只能一气呵成,不可中断。
- 运行时间较短,调用频繁。
- 对系统资源进行管理功能:
- 进程管理
- 存储器管理
- 设备管理
时钟管理,中断处理,原语是与硬件关联紧密的模块。而对系统资源的管理更多是对数据结构的操作,不会直接涉及硬件。
操作系统内核结构
大内核和微内核
比如:应用程序想请求操作系统的服务,这些服务的处理涉及到进程管理,存储管理,设备管理。
对于大内核:CPU只需要进行两次变态即可
对于微内核:CPU需要进行很多次变态。
大内核:将操作系统的主要功能模块都作为系统内核,运行在核心态。
- 优点:高性能。
- 缺点:内核代码庞大,结构混乱,难以维护。
微内核:只把最基本的功能保留在内核
- 优点:内核功能少,结构清晰,方便维护。
- 缺点:需要频繁地在核心态和用户态之间切换,性能低。
分层结构
特征:内核分为多层,每层可以调用更低一层的服务。
优点:
- 便于调试和验证
- 易扩充和维护,各层之间调用接口清晰固定。
缺点:
- 仅可调用相邻低层,难以合理定义各层边界。
- 效率低,不能跨层调用,系统调用执行时间长。
模块化
模块化是将内核划分为多个模块,各模块之间相互协作。内核就可以被分为主模块和可加载内核模块。
- 主模块:只负责核心功能,如进程调度,内存管理。
- 可加载内核模块:可以动态加载新模块到内核,而无需重新编译整个内核。
优点:
- 各模块之间逻辑情绪易于维护。
- 支持动态加载新的内核模块。
- 如果模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高。
缺点:
- 模块间的接口定义未必合理,实用。
- 模块间相互依赖,更难调试验证。
宏内核
所有的系统功能都放在内核里
优点:
- 性能高,内核各种功能都可以直接相互调用。
缺点:
- 内核庞大功能复杂,难以维护。
- 大内核中某个功能模块出错,就可能导致整个系统崩溃。
微内核
只把中断,原语,进程通信等核心功能放入内核;文件管理,设备管理。进程管理等功能以用户进程的形式运行在用户态。
优点:
- 内核小,功能少,易于维护,内核可靠性高。
- 内核外的某个功能模块出错不会导致整个系统崩溃。
缺点:
- 性能低,需要频繁的切换内核态和用户态。
- 用户态下各个功能模块不能直接相互调用,只能通过内核的消息传递来间接通信。
外核
内核负责进程调度,进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核保证资源使用安全。
优点:
- 外核可以直接给用户进程分配物理资源
- 减少了虚拟硬件资源的映射层,提升效率。
缺点:
- 降低了系统的一致性
- 使系统变得复杂。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 MyAKDreamのBlog!