更新历史
- 20220315
首次创建,对宏内核与微内核的概念做出简单的解释;
引言
与通用机操作系统一样,嵌入式操作系统也都有一个内核。 操作系统是由内核、用户界面、中间件、实用程序等组件组成的,其中内核起着最重要的作用。内核是操作系统中的一组核心程序模块,其作用包括管理系统资源、支持多任务并发执行,通常驻留在内核空间,运行于核心态,具有访问硬件设备和所有空间的权限,是系统中仅有的能够执行特权指令的程序。
运行在用户态的应用程序可以通过系统调用进入核心态,完成操作后再返回用户态。
内核结构
操作系统的架构是由内核的结构决定的。操作系统的内核结构分为两类:
- 宏内核 (macro kernel)
- 微内核 (micro kernel)
由于嵌入式系统资源有限、实时性和可靠性要求较高,因而操作系统内核的结构在嵌入式系统中更为重要。
宏内核结构
有些操作系统将内核的各个功能模块(如进程管理、文件系统、设备管理、网络通信等)整合在一起,模块间的交互通过直接调用其它模块中的函数来实现,执行效率高,性能好。这类操作系统内核称为宏内核或单内核(monolithic-kernel).
特点
- 优点:性能较好,系统的各个组件之间可以互相调用,功能切换和通信开销比较小。
- 缺点:即使不使用的功能组件和设备驱动程序也常驻在内存中,占用资源较多,维护工作量大。
操作系统举例
单内核结构的操作系统有:传统的 Unix、BSD Unix、Linux、MS-DOS,Windows 9x, Windows CE 和 Android 操作系统也都属于单内核结构。
微内核结构
操作系统仅将必需的基本功能(如任务调度、任务间通信、低级存储管理、中断处理等)放入内核,它们运行在核心态;其他功能都在内核之外,由在用户态运行的服务来完成,这种做法使得内核结构很小,所以称之为微内核结构。
微内核结构将操作系统分为两部分:一是运行在核心态的内核,只完成很少的一部分核心任务;二是运行在用户态的若干进程,每个进程完成一组系统服务,称为“服务进程”。当用户任务运行时,如果需要操作系统提供服务,它就作为客户进程以消息进程方式向内核发出请求,内核将该请求以消息通信方式传给相应的服务进程,服务进程相应该请求并提供服务,其结果仍以消息通信方式通过内核返回给客户进程。
特点
-
优点
- 内核精巧,结构紧凑,占用内存少,适合资源紧张的嵌入式系统;
- 开发和维护方便,系统可以动态更新服务模块;
- 接口一致:微内核提供了一致性接口,所有的服务都通过消息传递方式调用,用户态任务不需要区分是内核级服务还是用户级服务;
- 可扩展性与可配置性强,很适合嵌入式系统的可裁剪要求;
- 可靠性高:各个服务进程在用户态进行,有自己的内存空间,以消息方式通信,一个服务进程出错不会影响到整个内核,从而增强了系统的健壮性;
- 支持分布式系统:服务器可以在不同的处理及上运行,适合多处理机系统或分布式处理系统。
-
缺点
典型操作系统举例
采用纯粹微内核结构的操作系统有 AIX, Mach, Minix, VxWorks, QNX 等。
宏内核 V.S. 微内核
宏内核:
宏内核 | 微内核 |
---|
用户服务和内核服务运行在相同的地址空间中 | 用户服务和内核服务运行在不同的地址空间中 | 尺寸较微内核大 | 较小 | 扩展性差 | 扩展性较好 | 单个服务崩溃会导致整个系统崩溃 | 单个服务不会影响整个系统 | 平台提供的代码多,需开发的代码较少 | 需开发的代码量大 |
参考资料
- 知乎:微内核和宏内核;
- 聊了聊宏内核和微内核,并吹了一波 Linux;
- 《嵌入式系统开发技术》,高等教育出版社;
|