三连发:你真的能从底层和架构正确理解鸿蒙NEXT系统吗?

科技东东斯 2024-12-12 16:34:40

OK,我们来初探“纯血:鸿蒙,看看华为这段时间给大家的承诺到底兑现了多少。我们使用自己开发的测试脚本做了一些底层的探索,希望能让读者进一步正确理解鸿蒙和HM Kernel:

前段时间,我们完成了HarmonyOS NEXT的技术性前瞻,反响强烈。大约1个月前,我们获得了HarmonyOS NEXT内测版,一直更新到今天的beta版本。在这个过程中,我们尝试使用各种方法获得NEXT版本的高维权限,用于探索HM Kernel的真相。这些真相包括微内核是否堪当大用,相对Linux Kernel,是否能在一定范围内的硬件平台上做到了较好的性能、兼容性和部署弹性。在公测版发布的时候,我和Edsion Chen可以拿出这篇初步探索HM Kernel性能与HarmonyOS NEXT实际体验的文章。当然,由于并没有Root权限,以及一些信息依旧不清楚,所以这篇文章的测试并不全面,只能随着时间的推移,继续探索。

鸿蒙(HarmonyOS)分布式操作系统的缘起

从 2019 年公布鸿蒙操作系统至今,已经过去了5 个年头,在此期间,华为持续投入了大量资源持续推动鸿蒙操作系统的开发和推广,构建了一个比较完备的开发环境,加上华为产品的确非常受用户欢迎,拥有庞大装机量,吸引了不少第三方积极参与构建鸿蒙生态。

到目前为止,已经有包括支付宝、各大银行、WPS、知乎、抖音、小红书等应用上线了原生鸿蒙版,腾讯旗下的腾讯视频、QQ 浏览器等也都已经有原生鸿蒙版,微信、QQ 等我个人相信也会稍后推出,目前尚未推出的原因主要是鸿蒙是一个全新开发环境,需要花些时间罢了。

像微信看似只是界面简朴的明文聊天工具,好多人都说自己随便都能手捏一个出来。但是微信里牵涉到的复杂性要远超出大多数人的想象,例如依附其上的各种政府服务、公众号、视频号、金融、商业服务等等,腾讯都需要尽最大可能保证移植平滑无缝,不是表面看上去那么简单的。

鸿蒙操作系统对许多人来说可能都听说过,但是具体怎么回事,就不是三言两语能说清楚的。

在 2012 年的时候,华为已经意识到了国产操作系统的重要性,到了 2016 年 5 月,鸿蒙正式立项展开研发,在 2019 年美国针对中国科技公司制裁前,鸿蒙一直都是华为严格保密的内部项目。随着制裁措施的到来,包括华为在内的多家中国公司都无法以正常商业途径获得需要的软硬件服务,其中就包括谷歌的软件服务。

华为随后公布了包括鸿蒙在内的一系列 PlanB,尽管此时鸿蒙其实还处于研发阶段,但是这些 PlanB 的公布对于提振公司员工以及上下游厂商的信心和凝聚力起到了非常重要的作用。

华为围绕鸿蒙操作系统很快推出了名为开放鸿蒙(OpenHarmony)的开源项目,目前这个项目还是偏向于嵌入式设备,和现在鸿蒙手机、平板、台式机等设备上的 L3-L5 级(鸿蒙+安卓双应用框架)闭源鸿蒙有一定距离,不过它们都有一个共通的地方,那就是它们都是使用了名为鸿蒙的微内核。

走向通用场景的微内核——模块化快速部署与安全性

所谓内核(Kernel)就是指操作系统中提供各种基础服务的核心软件,负责管理所有进程、内存、文件等处理,运行于操作系统的最低级别,充当用户软件和硬件的桥梁,软硬件的交互都需要透过内核完成的。

对程序员来说,程序在编译为二进制代码后,需要额外的一步:链接,这一步就涉及到把操作系统的服务接口对接。

像最简单的 helloworld.c 程序,完全一样的文本代码,目标代码的处理器也是一样的,编译出来的二进制代码也是一样的,但是在 Windows 操作系统和 Linux 操作系统上都要执行各自的链接操作,只有这样,程序才能在不同的操作系统上运行。

目前人们一般把内核类型分为宏内核(Monolithic Kernel)、微内核以及混合内核。

单体内核(宏内核、集成式内核):

包括了 Unix、Linux 等操作系统,内核里包括了所有操作系统服务模块,软件和操作系统之间具有较高的相依性,内核有大量复杂代码编写而成。

主要优点:高效、更容易调试、进程间通信效率更好、系统调用和中断的效率更高。

主要缺点:容易因为某些瑕疵影响稳定性、容易产生安全漏洞、高度相依导致维护较复杂、难以增减模块。

微内核:

鸿蒙内核(HM Kernel)、黑莓 QNX就是微内核,最早则是被追溯到了 1969 年的 RC4000。

在微内核概念里,设备驱动程序、文件管理、图形控制等模块都放在用户空间,而微内核本身只包括了内存管理、进程管理、中断管理,好处是大幅度减少了内核的大小,但是更容易实现模块化。

微软的 Windows NT 和苹果的 XNU 则一般被认为是混合内核,设备驱动等性能关键模块运行于内核空间,而文件系统则放在了用户空间中,这样的设计大大提升了稳定性(对于经历过 Windows 95 的用户来说来说,基于 NT 的 Windows 2000稳定性强太多了)。

此外还有人提出了 Nano Kernel、ExoKernel(外挂内核),它们可以视作微内核的极端版。

对于这三种主要的内核类型,华为选择了微内核,原因主要是两点:

华为业务广泛,涵盖了汽车、网络、手机、穿戴式设备、PC 乃至各种智能家电等领域,为了简化维护复杂性,采用微内核能涵盖所有业务并且实现针对性的优化。

早在 2003 年,Linux 已经出现了抢占式实时支持的想法,这个功能对于响应速度非常敏感的应用来说非常重要,特别是工业、汽车、航天、乃至音频等领域。所谓实时性,就是如果有任务需要执行,实时操作系统会立即(在较短时间内)执行该任务,保证了任务在指定时间内完成,像黑莓的 QNX 就属于实时操作系统。虽然 20 年前就有了打造实时操作系统的想法,但是 Linux 用户在一段时间内都只能自己实现实时支持,好一点的像 Ubuntu 用户则需要订阅 Ubuntu Pro 才能获得,直到最近的 6.12 版主线 kernel,PREEMPT_RT才被正式接纳合并。而鸿蒙诞生伊始就已经将实时支持做到了 5 毫秒以内,最快可以达到亚毫秒级。

其次是安全性,微内核中只包括了最必要的系统服务,用户空间的折腾不容易影响这些系统服务,从而大大提高了安全性和可靠性。像上图提到,根据 Mitre 的统计,过去四年里的 1000 个 CVE(公共漏洞和暴露)缺陷里有大约 70% 其实可以透过适当的隔离避免,这对

另一方面,对华为来说,构建自己操作系统在最初动力并不是很强,只是一系列Plan B 中的重要组成。但是随着 2018 年美国《出口管制改革法》(The Export Control Reform Act of 2018)》等措施出台以及之后的层层加码(例如 2019 年的《关于保护信息与通信技术和服务供应链的行政令》等),一切变得必要且极为紧迫,而鸿蒙微内核在多端快速部署能力上得天独厚,成为了最佳的选择。

平滑过渡——所谓纯血鸿蒙,已经基本就绪

2019 年,华为在开发者大会上正式发布鸿蒙系统并宣布开源,到了 2020 年 8 月,鸿蒙已经应用到了华为智慧屏、电子穿戴设备上,目前除了华为自己两万多工程师投入到鸿蒙研发外,业界合作公司也有上万家共计几十万人参与。

上面第一张图片是鸿蒙OpenHarmony 的框架图,第二张图片反映了鸿蒙 OS 混血版和纯血版(HarmonyOS Next)的内核区别。

2021 年 6 月,面向手机的鸿蒙系统 2 开始推出,引入了内核层(KAL)的概念,其 KAL 包含了 HMK(鸿蒙内核)和ACK(Android common kernel 或者说 AOSP common kernel) 两个内核,使得其可以跑安卓 AOSP 原生应用,实现了比较平滑的系统切换,坊间在过去三年里关于鸿蒙里为何能跑 adb 之类安卓特有应用的原因其实也源于此而已。

回顾过去,正是这种极为罕见的 KAL 实现,使得鸿蒙系统的迁移过程得以尽可能的平滑,让华为获得喘息之机并重新崛起。

目前华为手机的主流版本已经是鸿蒙 OS 4,装机量数以千万,年初的鸿蒙先锋开发计划平台涌现了很多鸿蒙原生应用。

按照华为提供的资料,自从 2023 年启动鸿蒙原生应用开发以来,已经有上万家伙伴参与,生态已经成长壮大,如今正是展开切换到纯血鸿蒙的最好时机,毕竟庞大的客户群体已经足够吸引第三方开发商,是难得的增量市场,过去三年鸿蒙开发工具的铺垫也基本就位,让纯血鸿蒙大展拳脚的时候到了。

上图是这次收到了最近收到华为推送的HarmonyOS Next Beta版(最接近公测版的版本),版本为 Next.0.0.70,内核为 HongMen Kernel 1.9.3.B010,OpenHarmony 版本为 5.0.1.70。

这里前者就是鸿蒙系统的微内核,而 OpenHarmony 相当于谷歌安卓的 AOSP,是鸿蒙系统平台的基本系统框架,它的版本号和 OpenHarmony Public SDK API 版本(面向应用开发者,不包含需要系统权限的系统接口)挂钩,5.0.1.70 对应支持的 API 版本为 12,开发人员透过 API 可以调用鸿蒙系统的各种功能,API 版本不一样,鸿蒙系统提供的功能和特性也会有所不同。

这次我们获取到两部华为 Mate X5 折叠屏手机,其中一台授权获得了华为HarmonyOS Next更新推送,目前使用 adb 和 hdc 分别查询获得的微内核版本为:

添加图片注释,不超过 140 字(可选)

上面的是采用HarmonyOS 4.2 获得的系统内核版本号为 Linux 5.10.43,下面的则是鸿蒙 Next 上查询到的:HongMeng Kernel 1.9.3.B010 #1 SMP,构建时间为 2024 年 9 月 19 日。

为了让普通读者更容易理解,我整理了当前鸿蒙等几个操作系统的大致对比:

官方论文回应性能质疑和驱动支持

HarmonyOS Next的最大特点是完全切换到鸿蒙微内核(HM Kernel),微内核具有体积小、高度模块化的优点,但是也有人曾经对微内核提出一些质疑,认为微内核需要频繁进行进程间通信和消息传递会让其性能较差。

特别是智能手机等运行复杂应用的设备,其 IPC(进程间通信)值会达到每秒 4.1 万次,这是微内核传统优势领域例如路由器上的每秒 600 次所不能相提并论的,如此高 IPC 的应用场景,鸿蒙微内核能否胜任成为了一个不容忽视的问题。

对于这个质疑,华为在研发鸿蒙的时候提出了名为确定性延迟引擎(Deterministic Latency Engine)的技术,根据华为鸿蒙官网资料介绍,该技术会提前设置任务执行优先级和调度时间限制,资源会倾向于优先级更高的任务,从而将应用的响应延迟降低 25.7%,使鸿蒙微内核的 IPC 性能比现有系统高出五倍。

在今年 7 月份的操作系统顶级学术会议OSDI 24 上,华为集团中央软件院和上海交通大学联合了名为《Microkernel Goes General: Performance and Compatibility in the HongMengProduction Microkernel(微内核走向通用:鸿蒙生产级微内核的性能与兼容性)》的讲演,其中提供了一些数据:

按照这篇论文,鸿蒙核心内核代码是由 9 万行 C 代码编写的,包含了基础的功能,其余操作系统服务则是由大约 1 百万行 C 代码组成。

论文里的性能测试是在麒麟 9000(2020 年 10 月发布)上跑的。

LMBench 里的 lat_ctx(上下文切换)和 lat_pipe(管道通信时延)是可以用于直接衡量内核进程间通信性能的项目,大家可以看到lat_ctx 的耗时是 3.41 微秒,比 Linux 的 4.53 微秒快了 32%,lat_pipe 是 7.88 微秒,快了 14%。

图中的鸿蒙 lat_proc_fork(进程创建时间)时延虽然比 Linux 慢很多,但是论文对此表示,在真实环境里,fork 的主要开销源自于虚拟内存区域的拷贝操作,透过并行加速的话,能将时延从 160 毫秒缩短到 60 毫秒,这将接近于 Linux 在常见应用时的 30 毫秒表现。

lat_clone 的情况则有些不同,主要原因是作为全新的内核,华为鸿蒙非常缺乏程序(按照华为的资料,数以百计的设备所需要的驱动至少需要 5000 人年),为了实现快速部署,鸿蒙采用了双设备驱动策略,包括了能免修改复用现有(4.4、4.19、5.10 等版本)Linux 设备驱动的 Linux 驱动容器(LDC,运行于 ring3)和本机设备驱动容器(NDC,Native Driver Containers,运行于 ring0),不过 LDC 在操作系统服务和内核之间会有额外的 IPC 开销,属于 slow path,因此 lat_clone 的时延出现了两倍于 Linux 的情况。

在网络方面,LMBench 测试结果表明鸿蒙微内核的性能要比 Linux 快大约 21%,内存和存储性能则相当。

HarmonyOS Next的安全策略:化繁为简的权限约束

和HarmonyOS 4相比,HarmonyOS Next本身重新梳理了所有系统授权,禁止了多达 9 种不合理权限,首创了安全访问机制,从管权限改为管数据。

例如各种第三方 app 以往调用相机的时候,会询问用户是否开放相机权限给该 app,用户选择允许后,该 app 就获得了掌管相机使用的全程权限,而在HarmonyOS Next里这个 app 并不能实际掌握相机权限或者说相机拍摄的过程它是无法掌握的,它能获得的只是HarmonyOS Next相机拍摄下来的图片文件。

这样的权限管理结果是最大限度避免了第三方 app 偷偷调用相机拍摄,因为绝大部分用户开放了相机权限后,几乎不再关闭该 app 的相机权限,类似的还有存放用户复制内容的剪贴板等,都是这些 app 以往获取用户敏感隐私信息的重灾区。

如今HarmonyOS Next的权限管理机制已经将其牢牢锁好,app 只能访问用户允许的数据(图片、文件、剪贴板内容)等,像地图定位,app 也只能获得用户选定的位置而不是从系统获取当前定位,隐私保障大大提高。

上图是HarmonyOS Next的隐私和安全中心,和HarmonyOS4 不同的是,这里打开后会把各种隐私权限最近的调用情况全部展现出来,也会提醒用户手机当前尚未开启锁屏密码、未开启电话骚扰拦截以及升级数据加密等。

用户可以在隐私和安全中心里点击相机,HarmonyOS Next就会列出有哪些 app 有调用相机权限的需求、哪些 app 已经获得了调用相机权限以及什么时候调用过相机权限等信息,之后再点击一下 app 然后就能将该 app 的相机调用权限禁止掉,其他权限也能如此,非常直观、方便,和HarmonyOS 4相比至少少进一层界面。

在录音机在执行录制操作的时候,屏幕右上方会有一个黄色的指示器,华为称之为隐私灯,提醒用户当前有 app 正在采集隐私数据,不仅录音机会有这个提示,像麦克风、摄像头、地理定位等操作都会有这个隐私指示灯亮起。

不过我觉得这个指示灯可能还需要进一步调整,因为在 Mate X5 上这个位置恰好挨着前置相机的开孔,不好辨识。

另一方面,目前HarmonyOS Next的 user 测试版权限约束对开发人员来说有点过严,虽然可以 hdc 可以创建、修改文件,但是没有可执行权限:包括使用鸿蒙 devstudio 自带的 OHOS clang 编译器静态链接编译出来的鸿蒙二进制程序乃至 posix sh 脚本都会提示没有权限,都是无法执行,这种权限约束也许有一定原因,但是的确影响了我们想做更深入测试的想法,无法验证微内核的底层性能,非常希望华为以后能重新开放这个权限。

抖音刷屏功耗

我们写了两个简单的 powershell脚本,分别用 hdc 和 adb 以每 10 秒为周期执行一次模拟 0.5 秒的向上划屏操作,在HarmonyOS Next和HarmonyOS 4.2 的 Mate X5 上执行,测试的应用为抖音,然后用 perfdog 记录下大约 1 小时(鸿蒙 Next 上执行了 40 分钟多一些),主要观察耗电情况(屏幕亮度均设定到 120尼特左右):

从测试情况看,抖音在HarmonyOS Next上的能耗要更低一点,大约是 2.231 瓦,而在鸿蒙 4.2 上大约是 2.32 瓦。

在使用体验方面,抖音HarmonyOS Next和抖音安卓版差别不是很大,主要是一些功能模块欠缺失,例如尚未支持直播、连续自动播放、缺乏关键词关联等,但是刷视频作品是没任何问题的,也可以拍摄、上传自己的作品。

王者荣耀抢先体验版

在十一前的一天,HarmonyOS Next还上架了王者荣耀抢先体验版以及和平精英抢先体验版,前者下载后存储空间占用接近18GB,体积比HarmonyOS 4的王者荣耀大 6 GB 左右,这个版本的基本功能都是可以的,但是毕竟只是体验版,所以还是存在一些问题,例如方向键有时候会被锁定、声音略显偏小。

如果手机设置里将频率刷新率设置能智能的话,游戏可以以全程 120fps 的帧率运行,非常流畅,耗电方面实测比HarmonyOS 4 略高一点点,希望腾讯能尽快修正 bug 推出正式版,充分发挥鸿蒙纯血的优势。

流畅动效

HarmonyOS Next在界面互动上较HarmonyOS 4 有更多的动态体验,例如点击音量按键后,屏幕出现音量调整滑条,这时候按着滑条往左侧拖动,就会展示出媒体、通知、闹钟、通话四个音量调整滑条。

而在目前的HarmonyOS 4 是没有这个互动的,用户需要按音量滑条下方的齿轮,进入到手机设置界面里才能单独设置各模式下的音量。

其他动效:

添加图片注释,不超过 140 字(可选)

点击锁屏密码按键、控制中心、通话按键的时候,按键边缘会泛起柔光,但是需要在暗调主题的时候这个效果才会更明显;

相机界面搓焦段滑条的时候,滑条中心附近会泛起柔光。

按屏幕下方导航条唤起小艺智能体的时候,会触发环绕球体的动效;

霞光预告

HarmonyOS Next的天气引入了霞光预告功能,对于摄影师来说这个功能非常有用,在过往,大家可能需要依赖莉景或者 sunsetbot 来获取霞光预告,前者订阅收费不菲,后者需要额外打开网站并输入当地地区名称并且只能看到当天和明日的预告,略显麻烦和滞后。

而HarmonyOS Next只需要打开手机,点击时间下方的天气指示标记即可打开,下划一下,就能看到上图的霞光预告,在地图上直接点击就能马上显示当地连续七天的霞光概率和质量,对于风光乃至人像摄影师来说是非常方便的实用功能,在目前众多操作系统内置天气 app 里,HarmonyOS Next是独一份具备此功能的。

第三方 app 调用云空间

HarmonyOS Next的云空间进行了全面升级,可以同步的数据类型从以往的 7 种提升到了 30 多种,而且能让第三方轻松调用。

就以图库为例,只要开启优化设备存储功能,在小红书中点击创作图文内容,选择手机图库图片,此时图库中的图片虽然是低分辨率的缩略图,但是小红书实际插入的却是华为云空间的高清图片,这个功能大大节省了手机存储空间,而且以后更换手机的时候无需重新下载原图,也能让第三方应用调用高清图。

打破藩篱的原生 AI

HarmonyOS Next在设备下方提供了一个导航条,长按能直接召唤出小艺智能体,透过和小艺智能体的互动,执行各种 AI 操作,例如对网页屏幕截图中的表格进行识别提取:

操作流程参考上面的视频,例如,打开图库,拖拽图片到底部导航条,小艺智能体就会弹出来,询问需要进行什么操作,这时候点击提取表格,小艺就能将图片里的表格内容提取出来并保存为 excel 格式,点击 excel 文件后,我们就可以在手机带的 wps 里打开,非常方便。

而在HarmonyOS 4.2 里目前尚不支持该功能,在图库里甚至没法拖拽图片。

华为在HarmonyOS Next的 AI 实现的确上倾注了大量的心力,这得益于HarmonyOS Next完全自研,只要构思提出来,相应的接口都可以自己实现,让操作系统和各种 app 的 AI 互动操作再无障碍,充分利用华为盘古大模型的强大功能。

国产分布式泛生态系统的新起点

安卓系统一直饱受各种争议,特别是隐私安全和流畅性,相信大家都深有感受,特别是安卓允许透过第三方 APP 安装 APP,让所有安卓手机的安全机制千疮百孔。

这是安卓相对苹果手机的优势,但同时也是最大的安全漏洞,各种电诈 app 都是这样的方式安装到普通用户的安卓手机里。

HarmonyOS Next在这个问题上目前没有妥协,只允许透过华为应用市场分发应用,为应用的安全和品质提供了较大的保障,我非常希望这点能坚持下来。

此外,根据华为介绍,每一个原生鸿蒙应用都会在华为专业的性能工厂中充分测试并优化后才上架,华为有超过 140 多个性能观察指标,性能工厂 7×24 小时全自动运行,每日每个应用生产超过 8TB 性能测试数据,用于帮助开发者快速定位问题并优化应用性能。

以目前的试用来看,HarmonyOS Next的重要性在于重铸了国产系统体验,从底层开始重新全盘考虑安全性和流畅性的最佳化,构建了系统和 app 之间的 AI 应用接口,让用户操作化繁为简。

微内核对大部分人来说只是一个概念,但是对华为来说,鸿蒙(HM Kernel)微内核攸关生死,以目前来看这个微内核非常称职,完全可以胜任手机乃至全端设备部署,独有的 LDC 和 NDC 双驱动容器设计让纯血鸿蒙能在剥离安卓 AOSP 后依然可以平滑部署。

当然,HarmonyOS Next 目前才刚刚进入大规模测试阶段,有些功能缺失或者 bug 是预料中的事情,这不仅是华为一家的事情,还需要包括各位体验版用户和第三方开发商共同努力才能将其打造得更好。

0 阅读:0

科技东东斯

简介:感谢大家的关注