Skip to content

操作系统结构(分层/模块化/宏内核/微内核/外核)

考情分析

宏内核 vs 微内核是选择题高频对比,外核概念近年新增。🔥🔥 中频。

操作系统动辄上千万行代码,这么大的系统怎么组织才不会乱成一锅粥?

操作系统结构概览

结构核心思想代表系统
简单结构无明确模块划分早期 MS-DOS
分层结构按功能分层,上层依赖下层THE 系统
模块化划分为独立模块,定义接口Solaris
宏内核所有功能都在内核态运行Linux, Windows
微内核只保留最基本功能在内核态Mach, MINIX
外核直接向用户暴露物理资源Exokernel

分层结构

将 OS 划分为若干层,最底层为硬件,最高层为用户接口。每层只能使用紧邻下层的服务——类似于公司层级制度,员工只能找直接上级汇报,不能越级。

优点缺点
便于调试和验证(逐层验证)合理定义各层比较困难
易于扩充和维护效率低(层间通信开销)

模块化

将 OS 划分为若干模块,定义模块间的接口。各模块可以相互调用(不像分层那样只能调用相邻层)。

优点缺点
模块间接口清晰模块间的依赖关系复杂
易于维护和扩充接口定义不当会导致耦合

宏内核(大内核)

所有核心功能(进程管理、内存管理、文件系统、设备驱动等)都在内核态运行,作为一个大的程序链接在一起。

优点缺点
性能高(模块间直接函数调用)内核庞大,难以维护
各模块共享数据方便一个模块崩溃可能导致整个内核崩溃

微内核

只保留最基本的功能在内核态(进程调度、进程通信、中断处理),其他服务(文件系统、设备驱动等)运行在用户态,作为独立的服务进程。

优点缺点
内核小,稳定性高性能差(频繁的用户态↔内核态切换)
易扩充(新服务以用户态进程方式添加)进程间通信开销大
一个服务崩溃不影响内核

宏内核 vs 微内核

比较宏内核微内核
内核大小
性能低(消息传递开销)
稳定性低(一损俱损)
扩展性
服务间通信函数调用消息传递
代表Linux, WindowsMach, QNX

考试重点

一次应用程序请求文件服务:宏内核只需 2 次态切换(用户→内核→用户),微内核至少需要 4 次(用户→内核→文件服务→内核→用户),甚至更多。这是微内核性能差的根本原因。

外核(Exokernel)

外核的设计理念:不做抽象,直接暴露物理资源给应用程序。

传统 OS外核
将物理资源抽象为虚拟资源(虚拟内存、文件系统)直接分配物理资源(物理页框、磁盘块)
应用程序通过统一接口访问应用程序自行管理分到的资源

外核只负责资源的分配和保护,不做虚拟化。优点是减少了抽象层的开销。

考研高频考点

  • 🔥🔥🔥 宏内核 vs 微内核的对比(性能/稳定性/态切换次数)
  • 🔥🔥 微内核中内核态只保留最基本功能(调度/IPC/中断处理)
  • 🔥🔥 分层结构只能调用紧邻下层
  • 🔥 外核的设计理念(直接暴露物理资源)

OS 的结构决定了它的内部组织方式,但还有一个更基本的问题:电脑开机后,操作系统是怎么一步步从磁盘加载到内存并运行起来的?下一篇讲操作系统引导。

真题练习

相关真题(1题)

2023Q23选择题2分

微内核:可靠性、安全性、可扩展性好,但性能不如宏内核