请保留 -> 【作者:张佩】【原文:www.yiiyee.cn/blog】
鸿蒙在HDC 2019上作为最重要的产品被隆重推出,现在已经为世人所知。它的三个重要特点是:
第一,它基于微内核的实现,可以很好地运行于IoT及安全相关的嵌入式场景中;
第二,它是分布式架构,使得它可以很好地运行于多端协作的场景;
第三,它面向的是全场景的应用,囊括了像智能穿戴这样的IoT设备、智慧大屏、智能终端以及PC机等。其中荣耀大屏(电视)是它第一个产品。
鸿蒙OS主要特性速览和解析
全场景应用:微内核和鸿蒙OS要分开看
让一个OS实现全场景是很困难的,Windows系统尝试过失败了,基于Linux内核的众多OS应该在各种场景中都存在着,但它们是不同公司的不同OS产品组成的。某种意义上,苹果的OS有点全场景的意思,翻盖了可穿戴、智能终端到PC。但从资料看,苹果的多端OS的系统架构并未统一,虽然有信息认为它们在朝着统一的方向做。
那么,可想而知,华为要让HarmonyOS做到全场景应用支持,这件事情本身会有多困难了。从它现在公布的资料可知,鸿蒙OS现在支持多种内核。我认为这其实是它自研的微内核的能力尚浅,在智能终端和桌面这样的传统功能很重的应用中,微内核还无法胜任,而需要借力Linux内核甚至安卓系统的一些能力。
内核是可替换的,是鸿蒙OS的一个重大特征。视角切换到安卓OS,它其实也不绑定Linux内核,而是通过HAL来抽象底层的内核实现,但其十余年的发展至今,实际产品都只绑定Linux这个内核的。因为毕竟要实现内核可替换,是一件很费事的系统工程,难度很大的。鸿蒙OS若能做到3个内核兼容可替,技术上是很牛叉的事情。
具体是怎么做到的?业界的一种标准做法是POSIX兼容。如果鸿蒙微内核是POSIX兼容的话,就相对容易。但从它已经开源的LiteOS来看,其并没有实现POSIX接口。所以具体的实现细节,尚要等到鸿蒙的微内核开源了再看。
OS其实是一种操作环境,内核是用户看不到的部分。在讨论鸿蒙OS的时候,它更多表示的的是它的上层的软件框架和运行环境。鸿蒙微内核只是它兼容的内核之一。华为当前宣称的一些基于鸿蒙OS的场景能力如智能终端,是基于Linux内核的。
现在猜测是,鸿蒙OS的三种内核,分别用来适配不同的应用场景:LiteOS内核用于可穿戴和IoT场景、Linux内核用于智能终端应用场景、鸿蒙微内核使用于安全相关场景如TEE。华为希望今后Harmony微内核能力会逐渐增强,并最终替代LiteOS和Linux内核的能力。
分布式架构
分布式这种OS架构在传统意义上,是运行于服务器和数据中心上的,比如分布式文件服务器、分布式网络服务器。在终端上使用分布式架构,它的出发点其实是对于IoT时代万物互联的思考。当终端的IoT设备越来越多,不得不考虑它们之间更便捷、有效的互联通讯的时候,一个存在于端上的分布式OS,就有了其存在的价值了。
端上的分布式OS场景现在可以举两个例子:
第一是智能汽车场景。华为要以鸿蒙OS来控制汽车,不仅是车机,还能触达终端传感器。因为它把自己的车业务定位为汽车Tier 1方案商,硬件方案恰是它的分内业务,所以华为有能力在汽车的各种大大小小的芯片上,应用其鸿蒙OS。在传感器MCU上,它运行IoT版本的鸿蒙系统;在车机芯片上,它运行Linux版本的鸿蒙系统;在驾驶控制域芯片上,它运行微内核版本的鸿蒙系统。几十个不同版本的鸿蒙OS在车里面运行,联合在一起就是一个很具规模的分布式场景。
第二是各种智能终端在实际生活中的应用场景,典型的如智能家居、移动办公等场景。HDC上华为做了一个移动办公的生动演示,虽然并非基于鸿蒙OS来实现的,但它是分布式智能办公的一种运用。演示时,女主角将华为手机映射到PC上,可以在PC看到手机的整个屏幕,操作方法也完全和手机上一样的。这种模式给她的办公带来了两种便利:第一,可以用PC的鼠键来操作和打字;第二,手机和PC间的数据共享十分直接,操作手机上的数据,就像在PC本地上操作文件管理器一样。
它的分布式框架实现了四种能力:公共通信平台,分布式数据管理,分布式能力调度和虚拟外设。
分布式是一种比较高层次的架构,基于任何系统都可以搭建出不同的分布式架构。但华为想通过统一的鸿蒙系统来考虑和实施端上的分布式架构,其最大的好处是开发环境和应用生态的统一,能把蛋糕做得更精更大。
它可以提供统一的应用接口,而将分布式相关的底层技术隐藏起来,对应用开发者透明,使开发者能够聚焦自身业务逻辑,像开发同一终端一样开发跨终端分布式应用,也使最终消费者享受到强大的跨终端业务协同能力为各使用场景带来的无缝体验。
确定性和高性能
这是华为的一个纯粹的技术表述。它包含了两个很不容易实现的技术点:软件操作的延时确定性,IPC的高效性。任何一个系统如果能在这两点上做好了,其系统一定是非常安全和高效的。但现在华为在这两个点上只透露了笼统的结论,没有具体的过程数据和实现方法。
从它简单的论述中,我大概的推论是:它有一个确定时延引擎,可以确定一个任务的执行时间,根据它提供的信息,调度器可以相对确定地安排多个任务的优先级和执行时间片。和通用的调度器算法相比,这种实现的一个非常重要的不同处是,调度器知道更多的任务的执行细节。一般的调度器都是完全通用的,不需要对具体的任务有任何知识的;在鸿蒙这里,调度器却能够知道任务的一个大概的执行时间。这种情况下,调度器可以安排出更紧密的调度秩序,从而提高调度效率。华为宣称它们将任务的响应时延降低了25.7%。
另外,华为宣称对IPC进行了很好的优化,使得进程间通信效率提升了5倍。可能是和原生的安卓系统进行比较。
安全可信
安全性首先来自于微内核的“微”。在HDC上终端总裁余承东对此有过专业的表述,就是他们首次通过形式化验证的方法,验证了鸿蒙微内核的安全性。形式化验证是很夸张的一个东西,HDC上还提供了一个数据应该是可供参考的:一行代码如果要完成形式化验证,需要为它写100行验证代码。
这是非常夸张的比例,基于这个数据,传统内核就不可能完成形式化验证,比如Linux内核现在即便精简之后也超过千万行的代码量,形式化验证就需要编写10亿行代码,这在现实工程中几乎是无法实现的。
一个典型的微内核代码量是1w行左右。这只是一个大概的量级,具体不同的实现有高有低。如用于教学的Minix系统的内核大概4K行,工业上应用广泛的OKL4内核约8K行。但也有代码量多的,比如开源的面向智能终端应用的Fuchsia系统的内核,它现在有约6w行代码,这是目前所知的最为复杂的微内核实现。华为称鸿蒙微内核是Linux的千分之一,那么大概是4w行左右的样子。
从公开的信息看,鸿蒙的微内核的某个版本应该是已经完成了形式化验证的。这非常了不起,在此之前公开资料的信息,只有OKL4是通过了形式化验证的。从上面的代码量看,OKL4的代码量要远远小于鸿蒙的。这个版本的微内核当前作为TEE系统在使用。
高效统一的开发框架
对开发者友好,就是对自己友好。开发者多了,生态才会安顺,生意才会做大。
前面说了,他们要面向全场景应用来设计系统,并且实现了基于端的分布式架构。就像古时候的大家族一样,里面有好多个小家庭,如果没有强力的家族管理制度,各个小家庭就会各自为政,最后甚至会有内讧。那么多的应用场景,也需要有统一的开发和应用的框架来帮助开发者和使用者。华为将提供支持多终端的统一的开发IDE,内置实现多语言编译的方舟编译器,提供可视化编程等。可以做到一次开发,多端部署。
官方数据:方舟编译器可以提高安卓系统操作的流畅性24%,响应速度44%,第三方应用的流畅性高达60%。
结论
华为这一次围绕着鸿蒙OS这个名字,其实是打出了一套组合拳。鸿蒙只是这套组合拳的总名称,里面的招式却有好多种,丰富得很。
- 鸿蒙是一个大袋子,里面装了很多种内核产品,并且将来还是可能变化的。鸿蒙OS和鸿蒙微内核要分开来看,不是说鸿蒙OS就一定用的鸿蒙微内核。但它可以为不同的应用,使用不同的内核,对于它的全场景的目标是有利的。鸿蒙微内核有一个很大的野心,它将来在功能上要替代Linux和LiteOS,这是个将来的计划。
- 鸿蒙微内核确实搞起来了,华为对鸿蒙微内核下了血本,对其某个版本进行了形式化验证并用作为实际的TEE系统在应用。这此之前,业界仅有OKL4做过形式化验证。这个安全证明的通过,对一些特殊的工业应用有重大意义。
- 分布式架构和它的全场景应用的目标是一致的。分布式架构有助于它的软硬件生态的强化,环境中的多台设备的协同作业,会大大增强用户的使用体验。
- 统一IDE等开发和应用的环境,将帮助其生态建设。方舟编译器实现了多语言编译,对于应用开发的性能提升帮助极大。华为把很多系统级别的优化固化下来,沉淀为一些系统能力或者生产工具,带来了生态优势。
4,154 total views, 1 views today