三连发:重谈华为鸿蒙NEXT,从微内核HM Kernel谈起

三连发:重谈华为鸿蒙NEXT,从微内核HM Kernel谈起

文章图片

三连发:重谈华为鸿蒙NEXT,从微内核HM Kernel谈起

文章图片

三连发:重谈华为鸿蒙NEXT,从微内核HM Kernel谈起

文章图片

三连发:重谈华为鸿蒙NEXT,从微内核HM Kernel谈起

文章图片

三连发:重谈华为鸿蒙NEXT,从微内核HM Kernel谈起

文章图片

三连发:重谈华为鸿蒙NEXT,从微内核HM Kernel谈起
今年9月以来 , 我们从HM Kernel解析到性能实测 , 已经基本完成了对鸿蒙NEXT系统的探索和评估 , 华为最近发布了卓易通框架 , 用于兼容当前一些尚未适配NEXT系统的APP 。 让我们从内核开始 , 重谈华为鸿蒙NEXT 。
如果鸿蒙生态在国内乃至全球发展顺利的话 , 会成为继iOS和安卓之后的第三大相对独立的生态体系 , 这个体系在前辈生态的肩膀上 , 横跨手机、电脑、3C智能设备和新能源车辆 , 也许会成为跨端种类最多的分布式系统 。 很多年前我和微软聊过MS UWP的梦想 , 微软的大逻辑就是:UWP是一个真正的一次开发多端部署的分布式架构 , 从X86到ARM , 微软希望通过UWP来完成异构部署的梦想 。 但是很可惜 , UWP半道崩卒 , Apple和谷歌后来居上 , 在ARM架构的移动端完成了相关布局 。
对于华为的HarmonyOS NEXT生态来说 , 目前依然处于非常早期的阶段 , 尽管它从萌芽到脱离AOSP , 已经发展了十年 。 回头看Apple和谷歌体系的发展 , 大家在最初的五六年 , 都在解决底层问题 , 底层问题大致分为几个方向:
第一:系统面向的硬件体系都有哪些?从哪里开始?
【三连发:重谈华为鸿蒙NEXT,从微内核HM Kernel谈起】第二:系统和生态需要解决哪些问题?异构通信?单体性能?多媒体体验?消息传递?无缝流转?
第三:为什么由我来做这个生态?我有多大的号召力?号召力仅仅指的是应用适配和开发者利益分配吗?
对于苹果、谷歌、华为和早期的微软 , Symbian败亡的教训历历在目 。 Symbian甚至没做到不同版本之间的互相兼容 , S60和S80系统之间糟糕的兼容性和不互通的特征 , 以及Symbian对不同硬件架构糟糕的兼容性 , 失败来的如此排山倒海 , 甚至来不及总结就被苹果摧枯拉朽一般的打垮再也爬不起来 。 而微软在我说的这三个方向上犯了同样的错误 , 甚至搞出了WindowsPhone 不兼容之前的APP , 且一直解决不了X86和ARM之间的兼容问题 。
谷歌同样命悬一线 , 一直到史诗级的AOSP 2.1版本发布之后 , 才真正获得了手机厂商的支持 , 从而开启了波澜壮阔的安卓革命 。 从安迪鲁宾创立安卓的2003年到2008年ARM和华为加入安卓体系 , 再到2015年安迪创立Essential , 安卓体系内的故事同样凶险 , 作为安卓之父 , 安迪本人也把致命的错误都犯了一遍 , 最后伴随Essential的终结 , 安卓的故事从设备操作系统真正迈向了分布式生态体系 。
我之所以要强调这些史前故事 , 就是想告诉大家 , HarmonyOS NEXT的创立和发展同样凶险与充满挑战 。 直到今天 , 哪怕我们已经拿到了独立于AOSP体系的NEXT设备 , 我们也要重新审视行业前辈们走过的这些惊涛骇浪 。 如果过十年我们再回头看 , 如果十年后HarmonyOS NEXT如我们所愿成为全球真正的三大异构分布式系统之一 , 拥有来自全球的数十亿活跃设备 , 那我们可以说 , 华为在这套系统的顶层逻辑设计是非常成功的 , 它解决了我上面说的这三个方向的大问题 , 而不仅仅在某些自主研发的模块环节上自娱自乐 。
分布式系统的顶层逻辑设计很重要 , 它到底解决了设备连接和应用场景的什么问题?这要比所谓的技术自主研发更重要 。 微软、Symbian、早期的安卓体系基本都是自主研发 , 只不过顶层设计存在致命问题 , 所以都走不远 。 甚至在Linux/GNU世界中 , 能像Ubuntu这么成功的体系也并不多 , 许多符合GNU规范的Linux发行版 , 无论是部署数量还是用户场景 , 相对成熟的Ubuntu都差的太远 。
自主可控 , 自主研发的技术和产品 , 当然是操作系统生态中最重要的部分 , 但这终究是术 。 真正的道 , 是开发者生态对系统顶层逻辑的设计与发展规划 , 在这一点上 , 华为无疑是比肩苹果和谷歌的存在 。 或者说 , 至少华为在过去这一堆失败案例中 , 真正吸取了教训 。

虽然我对操作系统的理解并不深入 , 但经历的IT行业周期很长 , 看到过很多失败和成功的案例 。 移动端 , 无疑苹果给行业打了样 , iOS和MacOS做到了跨硬件平台部署 , 应用体验高度统一 , 消息通信丝滑流畅;服务器端 , Linux则给Windows Server上了一课 , 低成本、轻量化、高效率和横跨几乎所有硬件架构的兼容性 。
对于HarmonyOS NEXT来说 , 这是一个体系化的操作系统 , 它需要面对ARM、X86甚至别的指令系统 , 要做到场景硬件的全覆盖 , 所以需要具备一套完整的组件:编程框架、编译器、RunTime、自有编程语言、文件系统、内核、IDE、系统设计器、以及应用层的AI驱动、AI框架和AI模型 。 在这个过程中 , 华为官方宣布了鸿蒙的Kernel超越了Linux Kernel 。 如果按照一位程序员的观点 , 这是个要翻了天的言论 。 目前Kernel官网发布的Stable版本是6.10 , 包括安卓在内的各类linux衍生版本 , 都会基于硬件性能和具体需求选择不同版本的Kernel进行操作系统的开发 , 比如我自己编译的OP基于5.15.160内核 。 没正经学过Linux Kernel的人 , 大概不知道一个Kernel的任务到底有哪些 , 下图是Linux Kernel MAP:
Linux Kernel MAP , 来自Kernel.org
通俗点说 , Kernel类似于变形金刚里的Cube , 是操作系统的核心载体 , 包括核心的驱动程序、文件系统、网络通信、消息传递、输入输出系统、存储系统等等 。 目前Kernel的版本修订 , 多数聚焦在新的CPU兼容、新的安全策略、驱动程序补充和一些核心的功能 , 比如文件系统的更新 。 一般操作系统发行版厂商 , 比如AOSP基金会 , 只对Kernel做贡献 , 并不会自己全新开发一个Kernel , 毕竟涉及到的维度和技术难度都太高 。
华为的HarmonyOS NEXT , 采用自有微内核 , 这意味着这张Kernel MAP的绝大部分模块 , 华为都可能需要有自主控制能力 , 不说所有都是自己从零到一开发的 , 但绝大多数的部分都应该具备可控能力和长期迭代能力 。 说一句结束西方垄断很容易 , 但真正做到结束Linux Kernel使命 , 这其实是很难的 。 不过从过去华为发布的一系列产品和技术看 , 确实可能具备这样的能力 , 例如华为研发的EROFS文件系统已成为全球智能终端只读文件系统事实标准 , 随机读取性能对比EXT提升3倍 , 这套系统目前也被Linux体系广泛采用 。

这是一项巴别塔式的工程 , 即便到今天 , Linux也是全球的开发者力量堆出来的科学奇迹 , 再造一个巴别塔 , 极其考验华为在核心能力上的布局和潜力 。
感兴趣的读者可以自行阅读华为和上交大科研人员共同发布的论文《Microkernel Goes General: Performance and Compatibility in the HongMeng Production Microkernel》 。 这篇文章基本解释了鸿蒙微内核的兼容性 , 与Linux Kernel的关系 , 以及独特的原生优势 。
Microkernel Goes General: Performance and Compatibility in the HongMeng Production Microkernel
在我们阅读这篇论文 , 理解鸿蒙微内核之前 , 可以了解一些关于HarmonyOS的趣事 。 早在2021年6月 , 华为德累斯顿研发中心的Martin Děcky(此人是HelenOS微内核的作者)发表了他的宣言:我们正在开发Android的终极替代品 。 然后 , Martin Děcky开始了为华为研发操作系统的工作 。
Martin Děcky:我们正在开发Android的终极替代品
目前Martin已经离开了华为 , 在Kernkonzept GmbH工作 , 这是一家开发基于微内核的 L4Re 操作系统和相关虚拟化技术的公司 , 可以说 , Martin是一位真正的微内核系统专家 。 就在几天前 , 他在Mastodon Discuss.Systems服务器上发了这么一条贴子:下次有人告诉你微内核是无用的、不切实际的或性能差的 , 让他们读一下这个玩意 。 (这篇论文的作者 , 都是Martin在德累斯顿华为操作系统内核实验室的同事)

下次有人告诉你微内核是无用的、不切实际的和性能差的 , 让他们读一下这个玩意
好了 , 让我们从技术上正确理解鸿蒙微内核 。
根据这篇论文:华为为什么要在宏内核之外 , 开发鸿蒙的微内核呢?

微内核因其安全性、可靠性和可扩展性在嵌入式和安全关键场景中得到广泛应用 。 但是 , 在面向智能手机和智能车辆等更通用的场景时 , 微内核面临性能和兼容性的挑战 。为了解决上述挑战 , 华为设计并实现了鸿蒙内核 , 它在保留微内核优势的同时 , 通过重新审视和改进传统微内核的设计 , 如IPC(进程间通信)、基于能力的访问控制和用户空间分页等 , 以提高性能 。
鸿蒙微内核架构图
此外 , 华为解释了鸿蒙内核与Linux Kernel之间的关联和不同之处 , 大约如下:
架构设计:鸿蒙内核采用了微内核设计 , 将系统服务和驱动程序等组件作为用户空间服务运行 , 而Linux是一个宏内核 , 其所有组件都在内核空间运行 。
性能:鸿蒙内核特别关注性能 , 尤其在进程间通信(IPC)方面进行了优化 , 以减少性能开销 。
兼容性:鸿蒙内核设计了与Linux API与ABI的兼容性 , 使得Linux应用和驱动程序能够无缝运行在鸿蒙系统上 。
安全性:鸿蒙内核采用了基于令牌的访问控制 , 增强了系统的安全性 。生态系统:鸿蒙内核能够利用Linux丰富的应用和驱动生态系统 , 同时也支持新的应用开发 。
部署和验证:鸿蒙内核在多种设备上进行了部署 , 并通过形式化验证确保了关键安全属性 。
特定优化:鸿蒙内核针对智能手机、智能汽车等场景进行了特定的性能优化 , 如应用启动时间、系统引导时间等 。
其实绝大部分媒体都讲不清楚HarmonyOS NEXT到底是个什么系统 , 从这篇论文看 , HarmonyOS NEXT自主创新的部分主要在微内核、兼容性、生态系统、跨端部署和特定优化 。 在Linux Kernel和自研的微内核二选一上 , 针对鸿蒙生态(手机 , IoT和车)的互联需求 , 华为认为鸿蒙微内核的优势主要在安全性、可靠性、扩展性、性能表现、广泛的兼容性(指的是通过Linux ABI兼容Linux生态)、高效率的开发效率和较低的开发成本 。
举个例子 , 目前不少尝鲜HarmonyOS NEXT的用户 , 都觉得 , 即便在一颗性能没那么好的处理器上 , 这套系统的表现也是令人满意的 。 这个原理华为在论文中有所阐述:
鸿蒙微内核通过优化IPC(进程间通信)和其他关键性能方面 , 解决了传统微内核性能不如宏内核的问题 。 例如 , 通过同步RPC样式的IPC快速路径、差异化隔离级别和灵活的服务组合 , 鸿蒙微内核能够提供高性能的系统调用处理 。
举个比较恰当的例子 , Linux的弹性部署能力冠绝天下 , 既可以在超算集群上部署 , 也可以在鼠标大小的单片机上部署 , 很多99块钱的VPS , 跑Ubuntu依旧很丝滑 。 这其实就是Linux在性能上的天然优势 , 不挑硬件平台 。 鸿蒙微内核在上述维度的表现 , 也差不多实现了这个能力 。 相对的 , AOSP想优化系统性能和安全性 , 很多时候还得靠OEM们自己努力去实现了 。 (我其实更希望AOSP未来能开发自己的内核 , 甚至包括Openwrt.org也一样)
总体来说 , 鸿蒙微内核更轻量 , 开发者专注于服务和产品开发即可 , 无需过度关注内核的复杂性 。 此外 , 目前Linux内核在不同的任务场景和操作系统发行版上 , 性能表现差异很大 , 这使得特定的系统发行版需要成立专门的基金会去做性能优化 , 比如AOSP体系的性能调度问题就很大 , 国内这几家厂商都提出了自己的性能调度解决方案 , 对AOSP做出了杰出的贡献 。 相对的 , 轻量级的鸿蒙微内核的开发目标 , 就是要解决过度依赖硬件性能的问题 。 在上述论文中 , 华为和上海交大的科研人员 , 给出了鸿蒙内核和HarmonyOS NEXT系统的典型测试结果:

我摘取了一些典型的测试结论如下:(所有测试结果取自该论文)
  • 使用LMbench测试 , 鸿蒙内核的上下文交换(Context Switch)速度比Linux快32% , 网络操作平均快21% 。 这些提升主要归功于鸿蒙内核的简化处理流程。
  • 在处理页面缓存未命中导致的页面错误时 , 鸿蒙内核通过将文件系统与内存管理器合并 , 减少了20%的延迟。 此外 , 鸿蒙内核的tmpfs写入吞吐量比Linux提高了40%。
  • 在UFS块I/O基准测试中 , 采用数据/控制平面分离技术的鸿蒙内核在4K页面大小下的吞吐量比Linux高出140%。
  • 在应用启动时间方面 , 鸿蒙内核(HM)相较于Linux表现更好 。 测试显示 , 在运行安卓开源项目(AOSP)中的前30个应用时 , 鸿蒙内核的启动时间比Linux缩短了约17%。
  • 在典型场景中 , 鸿蒙内核的系统负载比Linux轻19% 。 这意味着鸿蒙内核在处理相同任务时 , 所执行的指令数更少 , 这有助于提高性能和能源效率。
当然 , 作为微内核 , 性能方面是天生有缺陷的 , 因为微内核把大量的基础服务都放到了用户空间 , 靠IPC(进程间通信)来解决问题 , 无疑会造成了巨大的系统开销和浪费 。 对于智能设备领域 , 重型负载场景是非常多的 , 比如人工智能计算 , 智能影像算法 , 游戏 , 华为的鸿蒙微内核必须要解决系统开销(IPC、Context Switch、消息传递)的效率问题 。 对此 , 华为的研究人员做了相关的应对措施 , 比如内核通过差异化隔离级别和数据/控制平面分离等技术 , 已经在某些高性能需求的场景下实现了接近或超过Linux的性能 。 上述的测试结果 , 也从侧面证明了 , 华为在解决微内核天生缺陷问题上 , 确实想了很多办法 。
*关于IPC、Context Switch、数据/控制平面等基础概念 , 可以参阅Wiki或者华为云的相关知识库 。
此外 , 鸿蒙生态面向的需求侧则是:全场景 , 原生安全和原生智能化:

为了构建一个安全可信的操作系统 , 华为也做了大量的工作 , 诸如:发布了根证书计划 。 这一计划旨在为华为系操作系统和浏览器提供更为安全和可信的数字环境 , 其中 , HarmonyOS NEXT率先采用了这一根证书计划 , 构建了自己的可信根证书库 。
我这几天也大概体验了部署在Mate60 Pro上的NEXT0.0.31 Dev Beta2 , 由于华为严格的信息安全措施 , 所以也无法截图给读者看界面 , 经过浅度的体验 , 目前版本的观点和展望如下:
  1. 大概是我见过iOS外最简洁的手机操作系统之一 , 尽管看得出来操作逻辑和视觉习惯依然和安卓体系差不多 , 但还是删除了大量华为认为的冗余部分 , 比如抽屉 。
  2. 过去我多次吐槽的系统复杂 , 沉重 , 一个功能(比如手表)多个入口问题 , 终于得到了彻底解决 , 全新设计的智慧生活和华为运动健康模块 , 界面更简洁 , 功能更简单 , 效率也更高 。 华为官方采用万能卡片连接设备 , 而具体设备的设置页面也比过去简单了很多 。 由于极大程度地精简了系统模块 , 所以这套系统的运行效率比较高 , 即便在麒麟9000s这种非顶尖性能SoC上依然可以获得丝滑的体验 。
  3. 目前没看到广告 , 不知道未来如何部署广告内容 。
  4. 华为目前推动了超过5000个APP适配 , 不过部分APP功能还不太健全 , 比如知乎的APP当前还无法发帖 。 这个问题倒不大 。 国内这些APP还好说 , HarmonyOS NEXT想成为iOS和安卓外的第三极 , 就必须走向全球 , 其实有很多全球业务的开发者也在关注NEXT的发展 , 我也希望华为能尽早推动诸如TEMU、Tiktok全球APP适配 。

5. 系统权限和数据分享的安全规范:HarmonyOS NEXT严格规范隐私数据的读取和应用 , 取消通话记录、短信、电话、读取已安装应用列表等9类不合理的权限 , 降低用户的管理成本 , 也从根源上降低隐私泄漏的风险 。 全新的安全访问机制 , 通过改变应用获取隐私数据的机制 , 实现从“管权限”到“管数据” , 彻底革新用户管理权限的方式 , 把隐私控制权真正交还给用户 。 此外 , HarmonyOS NEXT也实现了从个人单设备安全、多设备安全到多人多设备协同安全的技术革新 , 推出系统级文件加密 , 文件在手机或平板上被分享出去后 , 授权用户才能打开 。

HarmonyOS NEXT想成就一番事业 , 那他的舞台一定是全球 , 而不仅限于中国 。 相对过去这些成功或者失败的前辈 , 华为目前已经拥有超过九亿的iOT设备和庞大的新能源车辆生态 , 以及完成度还算不错的NEXT系统和开发社区 。 但巴别塔不是一天造成的 , 苹果、微软、谷歌都在这个行业耕耘了三四十年 , 即便是最年轻的安卓 , 也超过20岁了 。 属于HarmonyOS NEXT的故事才刚刚开始 。

    推荐阅读