鸿蒙OS的微内核到底是什么?

2019-08-19 15:35 来源:三分快三_5分快3_官方·澎湃号·湃客

字号
原创:品玩知科技
微内核一直是学界的宠儿,并不是业界的宠儿。
2019年8月9日,华为在其全球开发者大会上,正式发布了全新的自有系统 HarmonyOS 鸿蒙:基于微内核的面向全场景的分布式操作系统。余承东在现场表示, HarmonyOS 鸿蒙拥有分布架构、内核安全、生态共享、天生流畅四大优势。
        知乎答主@bacon xu 对全球开发者大会提到的微内核做了一个解答,从另一方面认识一个不同的鸿蒙OS:
        在经过好几代发展之后,微内核终于发展到了seL4,它成为了人类历史上第一个用形式化证明的操作系统。
        简单点说,用数学方法从逻辑的角度可以证明这个操作系统是 Bug Free没有 Bug的。但Linux就不可以,因为它的内核太复杂,没有办法证明,超出了人类人力所及范围。正所谓成也萧何,败也萧何。微内核的简单,成就了它的高安全。
        但是它的核心只保留了基本的资源管理:处理器的时间、内存、通讯、中断等。所有其他功能统统都扔给了应用层管理,从而以服务的形式去提供功能。服务之间采用IPC通讯(进程间通讯)。
        对比一下seL4的架构图和Linux的架构图,不难发现,Linux这种宏内核什么都有,seL4的东西好像都被排在用户空间里。也正因为这个原因,seL4的核心非常小,不到9000行C代码。
▲L4系统的架构
▲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 联合出品的精品栏目,知科技是知乎科技数码领域的官方机构号。针对科技热点新闻和好玩儿的数码体验,第一时间为用户带来可信赖的解读。

阅读原文
关键词 >> 鸿蒙OS,微内核
特别声明
本文为自媒体、作者等湃客在三分快三_5分快3_官方上传并发布,仅代表作者观点,不代表三分快三_5分快3_官方的观点或立场,三分快三_5分快3_官方仅提供信息发布平台。

相关推荐

评论(9)

热新闻

三分快三_5分快3_官方APP下载

客户端下载

热话题

热门推荐

关于澎湃 在澎湃工作 联系我们 版权声明 隐私政策 澎湃广告 友情链接 三分快三_5分快3_官方举报受理和处置办法