品玩

科技创新者的每日必读

打开APP
关闭
鸿蒙 OS

品玩知科技丨鸿蒙OS的微内核到底是什么?

微内核一直是学界的宠儿,并不是业界的宠儿。

第三方认证作者

品玩知科技

发布于 2019年8月15日

2019年8月9日,华为在其全球开发者大会上,正式发布了全新的自有系统 HarmonyOS 鸿蒙:基于微内核的面向全场景的分布式操作系统。余承东在现场表示, HarmonyOS 鸿蒙拥有分布架构、内核安全、生态共享、天生流畅四大优势。

知乎答主@bacon xu 对全球开发者大会提到的微内核做了一个解答,让我们一起从另一方面认识一个不同的鸿蒙OS:

在经过好几代发展之后,微内核终于发展到了seL4,它成为了人类历史上第一个用形式化证明的操作系统。

简单点说,用数学方法从逻辑的角度可以证明这个操作系统是 Bug Free没有 Bug的。但Linux就不可以,因为它的内核太复杂,没有办法证明,超出了人类人力所及范围。正所谓成也萧何,败也萧何。 微内核的简单,成就了它的高安全。

但是它的核心只保留了基本的资源管理:处理器的时间、内存、通讯、中断等。所有其他功能统统都扔给了应用层管理,从而以服务的形式去提供功能。服务之间采用IPC通讯(进程间通讯)。

对比一下seL4的架构图和Linux的架构图,不难发现,Linux这种宏内核什么都有,seL4的东西好像都被排在用户空间里。也正因为这个原因,seL4的核心非常小,不到9000行C代码。

L4系统的架构
L4系统的架构
Linux的宏内核架构
Linux的宏内核架构

对于微内核,由于用MMU(内存管理单元)对进程空间(内存区域)做了隔离保护,没有授权的进程是无法访问其他进程的空间。这就阻止了恶意程序对其他进程数据的窃取。

进程是一个操作系统的抽象概念。简单的说:每个进程运行一段用户编写的代码,从这个代码看过去,它好像拥有自己的CPU和所有的一切资源(内存、设备等)。当然我们都知道,这是操作系统给它造成的假象。当进程需要额外的资源时,得向操作系统申请。和别的进程通讯时,也得和操作系统申请。

这个逻辑看起来什么繁琐,但好处是不言而喻的:没权限,什么都别想干。想干坏事?把你的资源全部收回!这个场景可以脑补一下用Windows Ctrl+Alt+del或者用Linux下的 Kill -9杀掉没有响应的程序。

微内核连驱动都可以是进程的。也就说,只有内核不可以重启,其他的组件统统可以重启。但实际上它是最后防线,实践中并不会用到。因为系统不可能带着有重启Bug的驱动运行,虽然不会造成系统奔溃,但用户可不愿意买账。但对于写驱动的程序员这是一个好消息,至少不太容易把内核搞死,可以反复调试找问题。

在微内核的管理下,因为MMU的封锁过于严格,用户进程要存储一个东西,必须请求内核,内核把数据丢给文件系统的进程处理。早期的办法,只得把数据从用户进程搬到文件系统进程。这个过程非常耗时,而且不幸的是,还没什么好办法突破MMU的保护。

这是导致微内核性能低下的主要原因:CPU不支持微内核特性——微内核承受着性能上的惩罚——微内核不在主流的操作系统框架中——CPU们不会响应来自微内核的需求——CPU 不支持微内核特性。形成了一个恶性循环。

反观Linux内核,如果驱动不好,搞死内核的事情是常有的事。但因为文件系统都在内核里,内核可以直接访问用户空间的数据。而Linux采用的是系统调用,非IPC的方法,速度较之IPC要快。当然,Linux下也有IPC,但不幸的是,IPC在Linux下,性能也不咋地。不过Linux并不依赖IPC通讯,微内核却十分依赖。

因为IPC这个脚后跟的原因,微内核一直被Linux这种宏内核吊打。学界想了很多办法,L4提出了一个Fast IPC的办法,只要你IPC通讯没数据,可以借用CPU核心寄存器的办法传递消息,速度大大加快。也有人想到了dIPC, direct IPC。用标签内存的办法进行隔离,传递数据,无需通过内核空间。大大加快了通讯速度。但标签内存不符合现在计算机体系的架构,实践中,采用的可能性较小。

上交的陈海波教授团队,19年想了两个办法进行IPC的加速。一个是XPC,一个是Skybridge。其中XPC是硬件,增加了一点点CPU硬件修改,使得IPC通讯无需内核的参与,也无需数据拷贝;Skybridge,采用的是双内核,一个RootKernel,类似type-1的虚化,专门负责IPC数据通讯,上层的Kernel为微内核。这样IPC绕过了MMU 机制,也不会对微内核之上的MMU保护机制产生破坏。在IPC通讯的时候,无内核参与,无需拷贝。

再来看看Android的架构。Android因为采用了非常多的服务,不同于普通的应用,非常依赖于IPC通讯。为了提高速度,开发出了 IPC Binder Drivers 来加速 Linux下的IPC通讯。但效果不是太理想。XPC对Binder IPC的加速只有50多倍。

17年的dIPC也是吊打Linux的 IPC。

SkyBridge和dIPC处于同一性能级别,XPC则更高。从论文上看,SkyBridge更实用一些,未来XPC还需要继续依赖于硬件的革新。

目前市场上依然是宏内核的天下,如Linux、Unix、Windows等,微内核商业上较为有名气的可算是QNX。好在巨头们都看到了微内核的进步,Google搞了Fuchsia OS (内核 Zircon),华为有了鸿蒙,苹果MAC和IOS也号称微内核,微软搞混合内核。一时间好不热闹。

个人坚信微内核是未来的方向。微内核不到1万行的C代码,只要处理器支持MMU,就可以跑出微内核的全特性。服务也是可扩展的,依据不同的应用使用不同的服务就好,类似于USB热拔插。如同现在电脑没有光驱、硬盘、打印机,就用USB扩展。这也决定着微内核可以在各种场景下见到它的身影。手机上面可以弄一个Android Binder,堆上相关的库就可以运行Android;服务器上面弄一个Type-2的虚化或者容器,就可以运行各种各样的服务。嵌入式的体积不成问题,应用更不是问题。尤其是华为手握CPU的设计和操作系统的设计,想做一个带硬件优化的高性能系统并非难事。此举将会引领学界和产业界对微内核的一个小高潮。

华为这次的发力,真正的用一种操作系统内核统一了大多数应用场景。配上他们自家的开发工具,相信应该是很好用的。对于华为的开源,还有鸿蒙的未来发展、生态都只是时间问题。

而推动的微内核发展,则更是一个开启新纪元的事。

本文作者:知乎答主@bacon xu丨操作系统行业从业者

“品玩知科技”系知乎和 PingWest品玩 联合出品的精品栏目,知科技是知乎科技数码领域的官方机构号。针对科技热点新闻和好玩儿的数码体验,第一时间为用户带来可信赖的解读。

下载品玩App,比99.9%的人更先知道关于「鸿蒙 OS」的新故事

下载品玩App

比99.9%的人更先知道关于「鸿蒙 OS」的新故事

iOS版本 Android版本
立即下载
品玩知科技
第三方认证作者

“品玩知科技”系知乎和 PingWest 联合出品的精品栏目,知科技是知乎科技数码领域的官方机构号。针对科技热点新闻和好玩儿的数码体验,第一时间为用户带来可信赖的解读。

取消 发布
AI阅读助手
以下有两点提示,请您注意:
1. 请避免输入违反公序良俗、不安全或敏感的内容,模型可能无法回答不合适的问题。
2. 我们致力于提供高质量的大模型问答服务,但无法保证回答的准确性、时效性、全面性或适用性。在使用本服务时,您需要自行判断并承担风险;
感谢您的理解与配合
该功能目前正处于内测阶段,尚未对所有用户开放。如果您想快人一步体验产品的新功能,欢迎点击下面的按钮申请参与内测 申请内测