操作系统的体系结构

129 阅读3分钟

点击阅读:操作系统系列文章


1. 大内核和微内核

内核是操作系统最基本、最核心的部分。

实现操作系统内核功能的那些程序就是内核程序image.png

与硬件关联紧密的模块:

  1. 时钟管理:实现计时功能
  2. 中断处理:实现中断机制
  3. 原语:这种程序的运行具有原子性,运行只能一气呵成,不可中断。
    • 是一种特殊的程序
    • 处于操作系统最底层,是最接近硬件的部分
    • 运行时间较短、调用频繁

不直接接触硬件的模块,更多是对数据结构的操作:

  1. 进程管理
  2. 存储器管理
  3. 设备管理

image.png

  • 大内核:将所有模块都包含在内。
    • 优点:高性能
    • 缺点:内核代码庞大、结构混乱、难以维护
  • 微内核:只包含与硬件关联紧密的模块。
    • 优点:内核功能少,结构清晰,方便维护
    • 缺点:频繁在内核态与用户态间切换,性能低

操作系统的内核需要运行在内核态。操作系统的非内核运行在用户态

应用程序想要请求操作系统的服务,假设这个服务同时涉及到了进程管理、存储管理、设备管理,大内核需要进行两次变态过程,微内核需要进行六次变态过程。

变态过程是有成本的,频繁变态会降低系统的性能。

2. 分层结构

内核分多层,最底层是硬件,最高层是用户接口,每层可单向调用更低一层提供的接口

优点

  1. 便于调试和验证,自底向上逐层调试验证。
  2. 易扩充和易维护,各层之间调用接口清晰固定。

缺点

  1. 仅可调用相邻低层,难以合理定义各层边界。
  2. 效率低,不可跨层调用,系统调用时间长。

3. 模块化

将内核划分为多个模块,各模块之间相互协作。

内核 = 主模块 + 可加载内存模块

  • 主模块:只负责加载核心功能,如进程调度、内存管理
  • 可加载内存模块:可以动态加载新模块到内核,而无需重新编译整个内核。

优点

  1. 模块间逻辑清晰易于维护,确定模块间接口后即可多模块同时开发。
  2. 支持动态加载新的内核模块(如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性。
  3. 任何模块都可以直接调用其他模块,无需采用消息传递进行通信,效率高。

缺点

  1. 模块间的接口定义未必合理、实用。
  2. 模块间相互依赖,更难调试和验证。

4. 外核

内核负责进程调度、进程通信等功能,外核负责为用户进程分配未经抽象的硬件资源,且由外核负责保证资源使用安全。

优点

  1. 外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源,使用户进程可以更灵活的使用硬件资源。
  2. 减少了虚拟硬件资源的映射层,提升效率。

缺点

  1. 降低了系统的一致性。
  2. 使系统变得更复杂。

点击阅读:操作系统系列文章