鸿蒙从设计之初就为多终端(如边缘计算IoT、服务器等)而生,微内核、方舟编译器作为鸿蒙操作系统生态的两大核心要素。

微内核乃操作系统的一种结构形式,将系统实现各功能的模块化,更灵活,易于拓展、易于维护与更新迭代;编译器可视为人与机器的“翻译”,将人的程序语言翻译给计算机可理解并执行,是人与计算机之间实现沟通的桥梁。

daa62ae30daeca217548c72635aa58a6.png

华为10年来在编译器与系统内核的布局演进,已经为鸿蒙操作系统和进军物联网做好了充足的铺垫。

d9b4af52c40b55a0d64eeefaed0af1b5.png

2.1 鸿蒙微内核从底层即为物联网设计

微内核与宏内核相对应,是操作系统的一种结构形式。操作系统的核心功能包括文件系统、内存和I/O设备管理、CPU调度等,宏内核即指操作系统将上述功能全部“打包集成”在内核里,不同的功能模块之间耦合度高,所以具有高效率的优点,代表系统包括Linux、Unix等)。微内核则将系统分为各个小的功能模块,仅将最核心的调度、内存管理功能保留在内核中,驱动、文件系统等以“外部模块”的形式与内核连接,相应的优势是易于拓展、易于维护与更新、稳定性高,代表系统包括Windows、Mac OS X等。

微内核更适应复杂的程序功能,且能够更灵活地移植至不同硬件平台。微内核仅在操作系统的内核中保留最基本功能,大大降低了内核的开发难度;分布式思维,将非核心的程序和模块隔离在内核之外,因此当单一程序出现错误时不会影响系统整体功能;同时,微内核相比宏内核更易于移植,开发、更新周期也得以缩短。

仿照第一部分,同样可作以下类比:若操作系统类比为车辆等交通工具,则不同内核结构相当于车辆的不同定制方式。宏内核相当于商用整车,而微内核则类似支持深度定制车。在行驶过程中,商用整车虽整体运行效率高,但如果某一部件出现故障,则需要专人、同款备件才能维修;而定制车的很多模块可替代性本身就非常强,且能够通过简单改装在不同路况下行驶(不同硬件环境)。

768c163620590794d371d843e41936d2.png

鸿蒙微内核从底层即为物联网设计。上述可知,微内核的最大特性是仅在内核中保留最核心功能,因此对于鸿蒙而言:连接实时性更好(响应时延降低25.7%、时延波动率降低55.6%),同时结合5G低时延场景,尤其适用于工业控制、智能交通等物联网领域;可以做到故障隔离,最大程度保证系统的稳定性与安全性,在5G超多连接场景下更能满足万物互联的要求。

鸿蒙微内核体现分布式的特点,解决IoT生态协同的痛点。目前已有操作系统基本只对应于某一种硬件,如Windows对应x86 PC、iOS对应苹果手机等。但IoT时代终端种类数量极大拓展,难以针对每种硬件分别开发操作系统或应用程序,不同硬件终端的生态无法共享协同,开发效率低。而鸿蒙实现了硬件解耦,即可针对应不同设备进行弹性部署(例如智慧屏、穿戴设备、车机、音箱、手机等)。同时创新的分布式软总线使得拥有不同功能的硬件可以彼此协同。

例如:传统的相机、电视、音响等设备原本相互独立;但在鸿蒙的分布式软总线下,这些设备被“虚拟化”成摄像模组、显示模组、外放模组,并成为有机整体,用户无需另行设置即可按需调用各种功能,硬件终端之间形成相互协同。

fdb0f4b007e4f236f888252a6d1c1498.png

微内核是IoT操作系统演进方向,鸿蒙微内核之效率、安全性业内领先。一般微内核系统,由于驱动、文件系统等进程被外置,各模块之间的通信需要经过内核“搭桥”,因而效率往往比宏内核要低。但鸿蒙微内核对进程间通信进行了高度优化,使得鸿蒙相比QNX、Fuchisia效率提升3至5倍[1]。此外,由于微内核的代码数量远远少于宏内核,因此鸿蒙能够以对每行代码进行充分的“形式化”的安全验证,显著提升了内核安全性。

2.2 方舟编译器是鸿蒙的取胜关键

方舟编译器最早系华为于2019年4月在P30系列手机发布会上透露,但实际积淀十年,定位是多终端系统。华为早期透露方舟编译器将大幅提升手机端安卓系统的运行效率,而开发编译器其实是协助鸿蒙操作系统更深层次布局边缘计算、服务器等领域。

对传统编译器而言,编译时点、跨语言编译是制约应用程序执行效率的瓶颈。应用程序的执行要经过字节码到机器码的转换,程序员在编程时使用上述C、C++、Java、C#等程序语言,但硬件的执行逻辑是基于0和1的二进制。因此要让硬件能够“读懂”指令,就需要编译器把“程序语言”转译成“机器语言”。

(1)编译时点:根据编译器工作时点的不同,编译方式可分为两种,但执行效率仍有提升空间。一种是“边执行、边翻译”,程序调用了某一句指令,编译器就实时将其转译为二进制码(早期版本安卓使用该方案,程序执行效率低下);另一种是引进高性能虚拟机(在安卓系统中为ART,即Android Run Time),在程序安装时或系统空闲时就提前将代码转译完毕,进一步提升了程序执行效率,但新的问题在于程序安装时间长。

(2)跨语言编译:程序往往使用不同语言编写,对编译效率产生较大影响。例如采用Java和C/C++等多种语言混合开发的应用程序,在运行时需要借助通用接口来协调不同代码(即Java Native Interface,JNI)。通用接口需要占用硬件资源,同时不同代码的协调本身就低效,所以传统编译器下跨语言应用的执行效率较低。

方舟编译器对以上两大瓶颈的解决方案是:将编译过程提前至开发者环节。在安卓的体系下,一些复杂动态语义的编译仍需交由虚拟机完成。方舟编译器开发团队通过梳理Java的动态语义,进行了大规模的数据建模,尤其是在跨语言编译时,大大提高了动态语义分析的精度;另外,华为设计了一套具有核心专利的动态语义匹配机制,有效降低了运行时动态语义的开销。最终结果是,方舟编译器能够在应用程序执行之前,就将Java代码编译成机器语言,极大释放了硬件资源,这一点对于多终端尤其是物联网边缘计算而言尤为重要。

269f5d50fa80c96a45b3bee35e736387.png

方舟编译器对开发者友好,利于形成良好生态。过去安卓等系统避免在开发者环节涉及编译,一大原因是为了降低开发难度,开发者只需完成代码编写即可,而无需考虑如何跨语言编译。但方舟方案下将编译过程提前至开发环节,并不增加开发者负担,相反开发者还能通过方舟预置算法进行代码优化,还可自行开发代码优化算法,未来代码优化甚至有可能迁移至云端。开发环境友好是鸿蒙搭建良好生态的重要因素。

对于方舟编译器,也可类比如下:过去ART虚拟机搭配安卓系统,相当于经验丰富的司机驾驶传统的手动挡汽车;而方舟编译器搭配鸿蒙操作系统,则相当于搭载了L4级别自动驾驶的车辆,车辆行驶可以随时根据车况、路况灵活调整,保证所有乘客的乘车体验均为最佳。

兼容Java和C、C++等多种语言增强了鸿蒙即战力,并与自有麒麟、鲲鹏等硬件架构协同,形成类似Win-tel的软硬件格局。

16758bedbc2745fa75518097391561a3.png

因此综合微内核、方舟编译器两大要素看,鸿蒙生而为物联网设计,并非单纯以手机操作系统为主要阵地。一方面,对于华为成熟的手机业务而言,做系统容易,但建生态难,当前安卓和苹果已构建了几乎不可打破的生态系统,在条件允许的情况下继续使用安卓对于华为是一种资源节约。

进一步更通俗地解释:对于开发者编写的不同程序,只需经过方舟编译器的处理,鸿蒙操作系统即可顺利执行;且微内核下的鸿蒙可移植于不同平台。这样的系统特性天然适配于物联网时代的海量终端与海量应用。

[1]引用自2019年8月9日华为开发者大会公布数据。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐