admin管理员组

文章数量:1530825


2024年7月2日发(作者:)

鸿蒙OS与Fuchsia OS的异同

为什么Google需要Fuchsia操作系统

中,我就道明了Google做Fuchsia操作系统的野心是非常大的。Google通过完全

模块化的设计,希望让Fuchsia成为第一个AI原生(内建深度学习、语音语义、

人脸识别、图像分类等人工智能算法),云原生(与各种云服务无缝集成),适用于

手机、平板、笔记本电脑,以及路由器、智能音箱、机器人,甚至是Google的无人

驾驶汽车的超级操作系统。

这段话里,其实从三个维度讲解了Google的野心:

功能特性上:具备AI原生能力,内建了边缘和云端无缝化的人工智能能力;

生态上:具备云原生能力,与Google以及第三方提供的各种云服务无缝集成;

应用场景上:适用于个人移动设备、IoT设备甚至是无人驾驶汽车等不同运算能力

和需求的场景。

而实现上述野心的手段是,将整个操作系统完全模块化,变得可伸缩,可定制。

我们再回看华为在发布会上的PPT:

灵活适配全场景丰富终端形态

这是文章中的第四张PPT,从配图中,我们可以看到它的适配范围包括了

GB级内存的:桌面PC、笔记本电脑、手机

MB级内存的:智能手表、车机

KB级内存的:只能摄像头、智能灯泡、智能门锁

这个覆盖的跨度与Fuchsia OS是非常相似的。在Fuchsia的内核Zircon(之前被

称为Magenta)刚刚出来的时候,福布斯的报道就包括了这些内容[1]。

分布式软总线

华为在发布会上,花了非常大的篇幅介绍这个功能。从PPT中的内容,大体推断它

包括了2个部分:

底层的“极简协议”。华为本身就是搞通讯出身的,搞个新的协议自然不在话下。

而这个协议是直接构建在网络层之上的3层协议。虽然ppt上这个协议直接代替了

原本协议栈中的4层。然而,实际上,大量现代的应用层协议(如HTTP协议)都

是直接基于4层的TCP协议的,并不存在表示层和会话层协议。这个所谓的极简协

议其实也就是替代了TCP/IP或者UDP/IP这2层协议而已。设计上应当是尽量压缩

了协议包头的尺寸,并设计成了无状态非连接的形式。其根本目的在于降低通信的

延迟,提高带宽的利用率。面向的场景应该是包长非常小,但对实时性要求高的场

合。

上层的应用框架。顾名思义,就是提供了一套SDK给到开发者,方便使用上述的极

简协议实现局域网内的自发现、消息的单播、多播、广播。

上文中,我特地强调了“局域网”是有原因的。因为现在大家使用的路由器的路由

功能是基于3层的(IP层)。所以如果华为做的这个协议是一个非IP兼容的协议的

话,那么它就无法被你的路由器正确路由,自然也就无法扩展到广域网了。

所以,我猜测华为设计这个的目的,主要还是在于类似iOS Handoff或者AirDrop

的功能。但提供了更好的实时性、可靠性和带宽。

至于这一点,在Fuchsia中,恰恰选择了一条完全不同的路径。在Fuchsia中,全

面拥抱了开放和标准的协议,拥抱了一些网络方面的新技术。比如在做Fuchsia开

发的时候,利用了IPv6的自组网特性,mDNS的自发现特性和HTTP/2.0作为通讯协

议,实现远程对客户机的操控和管理。(题外话,在这一点上,Apple做了非常好的

表率,在每一个OS大版本发布的时候,都会非常有意识、有节奏的将最新的技术

整合进来,并且发挥出最大的功用)

调度引擎

再接下来,华为又花了很大的笔墨来讲内核的调度引擎。

关键内容是在吐槽Android中用的Linux内核采用的完全公平调度器[2](CFS)。

坦白的说,我非常认同华为的吐槽,因为这个调度器是更加偏向于系统吞吐量,而

非实时响应能力。所以,当系统负载较高,或是面临突发负载时,非常容易导致UI

卡顿。

而鸿蒙的内核很可能是一个实时内核,可以针对某些任务设定调度的deadline,保

证在deadline前一定得到调度。这个做法通常应用在嵌入式领域比较多(比如ECU

在控制你的发动机的时候,某些点火计算的任务是一定要在点火时间到来之前完成

的)。

IPC性能

由于鸿蒙和Fuchsia都是微内核的操作系统,所以IPC(Inter-process Call)性

能是内核最最关键的指标之一。它直接决定了整个操作系统的性能水平,甚至可以

直接将一个微内核操作系统排除在实用性之外。在华为的PPT中,华为声称鸿蒙内

核的IPC性能是Fuchsia的5倍。这是相当夸张的一个性能优势。至于华为是如何

做到的,我是非常非常好奇的,期待华为开源鸿蒙OS(星星眼)。

架构图

最后,说一下华为放出来的架构图。其实除了内核层之外的部分我一点都不关心。

我们重点关注内核层,会有很惊喜的发现:

架构图中,内核层一共有3个内核,分别是Linux内核、鸿蒙微内核、LiteOS内

核。我们知道,如果没有虚拟化技术,这3个内核是无法共存的,那么华为到底是

怎么做到的呢?秘密藏在SoC的Block Diagram中:

让我们一起看一下官宣的麒麟970的PPT(980的PPT为了放别的组件,把Sensor

Processor隐藏了,但硬件上肯定是有的):

注意图中的3个地方:

左上角的8-Core CPU

左下角的i7 Sensor Processor

右下角的Security Engine (inSE & TEE)

我们再看华为发布会中第14张图片,标题是“微内核技术用于可信执行环境

(TEE)”。再注意右侧的那个框图,可以看到鸿蒙的微内核现在是跑在TEE内的,

而普通执行环境跑的是Linux内核。

提到的第三个内核LiteOS是华为针对IoT领域推出的嵌入式操作系统[3]。

所以我认为,这次在鸿蒙1.0上,主CPU里面跑的还是Linux,鸿蒙微内核只是运

行在Security Engine的TEE环境中,而LiteOS则是跑在Sensor Processor(实

际上就是一颗内置的MCU核心)上,负责处理传感器数据的嵌入式内核。

结论

本文的结论仅限我根据华为当前公布出来的PPT猜测的个人观点,很可能存在错

误,等华为开源后,我会另外行文修正。

鸿蒙1.0中,鸿蒙微内核仅运行在TEE中,并非整个操作系统的主要内核;

操作系统的主要内核仍然是Linux(应该就是Android魔改过的Linux内核,但加

上了华为的魔改,比如EROFS、“极简协议”);

LiteOS内核本身就是几乎所有华为手机上的Sensor Processor(客官可曾记得苹

果在A系列处理器中增加的M系列核心?)的嵌入式OS;

鸿蒙OS 1.0主体就是AOSP加上了华为自己的修改(比如EMUI的壳、方舟编译器

的运行时,GPU Turbo等);

你可以认为EMUI 10.0就是鸿蒙OS 1.0;

鸿蒙OS 2.0开始的发展方向应当是完全按照Fuchsia的轨迹来设计和执行的,目

测节奏上也会紧跟Fuchsia的步伐。


本文标签: 内核协议智能调度时候