华为开发者大会上正式宣布了鸿蒙操作系统,该系统其中一个亮点是 —— 微内核。华为声称,微内核的启用,使其速度大大提升,并且在安全性上产生变革性突破,微内核打破了宏内核下root即可获取用户所有权限的做法,在安全性上大大提升。
微核的目标是将系统服务的实现和系统的基本操作规则分离开来。例如,进程的输入/输出锁定服务可以由运行在微核之外的一个服务组件来提供。这些非常模块化的用户态服务器用于完成操作系统中比较高级的操作,这样的设计使内核中最内核的部分的设计更简单。一个服务组件的失效并不会导致整个系统的崩溃,内核需要做的,仅仅是重新启动这个组件,而不必影响其它的部分。
微内核将许多OS服务放入分离的进程,如文件系统,设备驱动程序,而进程通过消息传递调用OS服务。
第一代微内核,在内核提供了较多的服务,因此被称为'胖微内核',它的典型代表是MACH,它既是GNU HURD也是APPLE SERVER OS 的内核,可以说,蒸蒸日上。
第二代微内核,只提供最基本的OS服务,典型的OS是QNX,QNX在理论界很有名,被认为是一种先进的OS.
但是微内核有利有弊:
微内核的优点系统服务模块化,可移植性高;
内核安全性提高(模块内部的 Bug 不影响内核稳定,将黑客利用软件漏洞造成的破坏限制在单个模块内部);
可以多套系统服务共存,相当于同时运行多种操作系统;
稳定统一的接口(可以独立维护私有驱动以及服务,不需要跟内核源码绑定);
在商业上,微内核可以避免代码受到一些开源协议的影响,比如 GPL 协议;
内核精简,可以进行形式化验证,利用数学证明内核的安全性;
数学可证明的实时性;
非常适合多处理器系统设计,在多处理器核心计算机上,互相依赖的系统服务可以同时运行;
微内核的缺点通过进程通信的方式交换数据或者调用系统服务,而不是使用系统调用,造成额外的操作系统开销;
使用一些频繁使用的系统服务时,比如网络收发数据,造成的进程上下文切换对操作系统来说也是一个负担;
由于系统服务高度模块化,系统服务之间存在大量的内存复制;
对互相之间存在复杂调用关系的系统服务,难以设计通信接口;
系统服务与内核在地址空间上分离,造成代码局部性差,降低了 cache 命中率。