- +1
鸿蒙OS的微内核到底是什么?
知乎答主@bacon xu 对全球开发者大会提到的微内核做了一个解答,从另一方面认识一个不同的鸿蒙OS:
在经过好几代发展之后,微内核终于发展到了seL4,它成为了人类历史上第一个用形式化证明的操作系统。
简单点说,用数学方法从逻辑的角度可以证明这个操作系统是 Bug Free没有 Bug的。但Linux就不可以,因为它的内核太复杂,没有办法证明,超出了人类人力所及范围。正所谓成也萧何,败也萧何。微内核的简单,成就了它的高安全。
但是它的核心只保留了基本的资源管理:处理器的时间、内存、通讯、中断等。所有其他功能统统都扔给了应用层管理,从而以服务的形式去提供功能。服务之间采用IPC通讯(进程间通讯)。
对比一下seL4的架构图和Linux的架构图,不难发现,Linux这种宏内核什么都有,seL4的东西好像都被排在用户空间里。也正因为这个原因,seL4的核心非常小,不到9000行C代码。
对于微内核,由于用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通讯的时候,无内核参与,无需拷贝。
目前市场上依然是宏内核的天下,如Linux、Unix、Windows等,微内核商业上较为有名气的可算是QNX。好在巨头们都看到了微内核的进步,Google搞了Fuchsia OS (内核 Zircon),华为有了鸿蒙,苹果MAC和IOS也号称微内核,微软搞混合内核。一时间好不热闹。
个人坚信微内核是未来的方向。微内核不到1万行的C代码,只要处理器支持MMU,就可以跑出微内核的全特性。服务也是可扩展的,依据不同的应用使用不同的服务就好,类似于USB热拔插。如同现在电脑没有光驱、硬盘、打印机,就用USB扩展。这也决定着微内核可以在各种场景下见到它的身影。手机上面可以弄一个Android Binder,堆上相关的库就可以运行Android;服务器上面弄一个Type-2的虚化或者容器,就可以运行各种各样的服务。嵌入式的体积不成问题,应用更不是问题。尤其是华为手握CPU的设计和操作系统的设计,想做一个带硬件优化的高性能系统并非难事。此举将会引领学界和产业界对微内核的一个小高潮。
华为这次的发力,真正的用一种操作系统内核统一了大多数应用场景。配上他们自家的开发工具,相信应该是很好用的。对于华为的开源,还有鸿蒙的未来发展、生态都只是时间问题。
而推动的微内核发展,则更是一个开启新纪元的事。
本文作者:知乎答主@bacon xu丨操作系统行业从业者
“品玩知科技”系知乎和 PingWest 联合出品的精品栏目,知科技是知乎科技数码领域的官方机构号。针对科技热点新闻和好玩儿的数码体验,第一时间为用户带来可信赖的解读。
本文为澎湃号作者或机构在澎湃新闻上传并发布,仅代表该作者或机构观点,不代表澎湃新闻的观点或立场,澎湃新闻仅提供信息发布平台。申请澎湃号请用电脑访问http://renzheng.thepaper.cn。
- 报料热线: 021-962866
- 报料邮箱: news@thepaper.cn
互联网新闻信息服务许可证:31120170006
增值电信业务经营许可证:沪B2-2017116
© 2014-2024 上海东方报业有限公司