【操作系统】典型内核架构对比
参考:
(1)操作系统实战45讲
(2)Linux系统——架构浅析
一、架构分类
内核是操作系统的核心,对下承接硬件设备,对上承接应用程序,管理计算机的所有资源。主要包括以下几个模块;
进程调度、内存管理、设备管理、文件系统、网路管理。
参考wiki:
1、宏内核
宏内核架构中,内核包含所有核心模块,各模块属于同一层次,“宏”的体现在该层设计的功能较多;
其优点在与性能强大,缺点在于各模块之间耦合度较高,结构复杂,开发与维护困难。
应用程序 |
---|
内核:进程调度、内存管理...... |
硬件设备 |
2、微内核
微内核架构中,内核仅保留少量模块(IPC通信、内存管理等),其他功能进行模块化处理,转化成用户进程;用户进程利用消息机制与内核进行通信。
微内核高度模块化,稳定性较好,但是由于用户进程需要频繁地与内核进行交互,性能较低。
应用程序 |
---|
用户进程:设备管理、文件管理、系统服务...... |
内核:进程间通信、内存管理...... |
硬件设备 |
3、混合内核:
混合内核架构,为微内核的重构版本,将一些对性能影响较大的组件从用户进程中移到内核,为了效率在架构方面做了部分妥协,如果彻底妥协就变回宏内核了。
应用程序 |
---|
用户进程:系统服务、文件管理...... |
内核:进程间通信、内存管理、设备管理...... |
硬件设备 |
二、Linux
linux内核走的是宏内核路线,主要包括:进程调度、内存管理、设备驱动、文件系统、网络模块。
架构图参考链接1;
三、iOS Darwin
Darwin作为macOS与iOS操作系统的核心,使用微内核(Mach)和对应固件来支持不同的处理器平台,并提供操作系统原始的基础服务,内核态还有BSD系统为上层的功能性系统提供服务和工具。可见,Darwin为混合内核架构。
Mach内核提供简单的进程、线程、IPC通信、虚拟内存设备驱动相关的功能服务,BSD则提供强大的安全特性,完善的网络服务,各种文件系统的支持,同时对Mach的进程、线程、IPC、虚拟内核组件进行细化、扩展延伸。
应用在调用Darwin系统API时,会传入一个API编号,根据编号索引Mach陷入中断服务函数。此时,API号码如果小于0,则表明请求的是Mach内核的服务,API号码如果大于0,则表明请求的是BSD内核的服务,它提供一整套标准的POSIX接口。
架构图参考链接1:
四、Windows NT
NT是现代Windows的内核,从Windows 2000开始。NT内核定义了三层,最底层的HAL,封装硬件差异;第二层为小内核,完成进程、内存、配置、I/O文件缓存、电源与即插即用、安全等相关的服务;第三层是内核执行体,对外提供相应的接口,其它执行体要通过内核模式可调用接口和其它执行体通信或者请求其完成相应的功能服务。
NT架构结构清晰,完全遵循高内聚、低耦合的设计标准,可惜闭源。
架构图参考链接1: