华为在此前的华为开发者大会上正式宣布了鸿蒙操作系统,该系统其中一个亮点是 —— 微内核。华为声称,微内核的启用,使其速度大大提升,并且在安全性上产生变革性突破,微内核打破了宏内核下root即可获取用户所有权限的做法,在安全性上大大提升。
什么是微内核呢?
微内核结构由一个非常简单的硬件抽象层和一组比较关键的原语或系统调用组成;这些原语,仅仅包括了建立一个系统必需的几个部分;如线程管理,地址空间和进程间通信等。
微核的目标是将系统服务的实现和系统的基本操作规则分离开来。例如,进程的输入/输出锁定服务可以由运行在微核之外的一个服务组件来提供。这些非常模块化的用户态服务器用于完成操作系统中比较高级的操作,这样的设计使内核中最内核的部分的设计更简单。一个服务组件的失效并不会导致整个系统的崩溃,内核需要做的,仅仅是重新启动这个组件,而不必影响其它的部分
微内核将许多OS服务放入分离的进程,如文件系统,设备驱动程序,而进程通过消息传递调用OS服务。微内核结构必然是多线程的,第一代微内核,在内核提供了较多的服务,因此被称为‘胖微内核’,它的典型代表是MACH,它既是GNU HURD也是APPLE SERVER OS 的内核,可以说,蒸蒸日上。第二代微内核只提供最基本的OS服务,典型的OS是QNX,QNX在理论界很有名,被认为是一种先进的OS.
采用微内核设计的操作系统
微内核并非一个新的概念,它已经存在很长的历史,下列的操作系统都是基于微内核结构设计的:
AⅨ
BeOS
L4微内核系列
Mach,用于GNU Hurd和Mac OS X
Minix
MorphOS
QNX
RadiOS
VSTa
RT-Thread
知乎上有人对微内核下了一个结论:
Micro-kernel 已经失败。在商业级操作系统中(包括可以用于 mission critical 的 open source 操作系统),除了 L4 还在苦苦留有少量份额,没有任何 micro-kernel 的市场。
第一代 micro-kernel 是以一个错误的方式解决了一个错误的问题。而第二代 micro-kernel 不过是以正确的方式解决了错误的问题。
Linux 究竟是单内核的还是微内核的
Linux 是一个单内核结构,同时又吸收了微内核的优点:模块化设计,支持动态装载内核模块。Linux 还避免了微内核设计上的缺陷,让一切都运行在内核态,直接调用函数,无需消息传递。
早在 1992 年,Linus 曾经与 Tanenbaum 进行一场关于操作系统内核选择的著名争论。Tanenbaum 认为,以微内核架构设计的操作系统,在理论上,比宏内核架构更加优越,主张Linux应该以微内核架构来进行重新设计。但是 Linus 以开发实务上的观点展开反击,陈述 Linux 选择宏内核架构进行开发的理由,并比较Minix与Linux的性能差异。你可以通过维基百科了解此次争论的完整细节。
Tanenbaum —— 著名的技术作家、教育家和研究者,IEEE高级会员、ACM高级会员、荷兰皇家艺术和科学院院士、1994年ACM Karl V. Karlstrom杰出教育奖、1997年ACM计算机科学教育杰出贡献奖、2002年Texty卓越教材奖、第10届ACM操作系统原理研讨会杰出论文奖、被列入“Who‘s Who in the World”人物目录。
下图是宏内核(左)和微内核(右)两种结构的简单架构图:
当然对最终用户而言,我们并不在意采用何种方案。从现实情况来看,微内核似乎还有很长的路要走。
华为鸿蒙OS就快要应用到终端了,我们非常期待鸿蒙系统早日能给最终用户提供服务。