鸿蒙内核论文解读,微内核在性能与生态上面临哪些挑战?

1个回答

写回答

颖颖鑫

2026-01-30 02:03

+ 关注

华为
华为

陈海波老师带领的华为团队在OSDI24会议上发布了关于鸿蒙内核的论文Microkernel Goes General: Performance and Compatibility in the HongMeng Production Microkernel。不出所料,网络上再次掀起热烈讨论,但大多集中在表面争论,很少有人深入探讨技术细节。出于好奇,我仔细研读了这篇论文,并将学习内容整理成问答形式,以便更好地理解其中的技术要点与设计理念。以下便是我的学习笔记:微内核的设计理念是让内核保持最小化,将更多功能移至用户空间实现,从而提升系统的安全性和可扩展性。然而,这种方式并非没有代价,性能通常会面临较大挑战。因此,当前采用微内核的系统大多应用于特定领域(domAIn-specific)场景。这类场景中,应用程序数量有限且预先确定,硬件资源相对受限,对内核功能需求简单,同时更注重安全性而非极致性能。在鸿蒙关注的新兴领域,如智能手机与智能汽车等,应用类型丰富且动态多变,资源竞争尤为激烈。内核必须具备复杂而灵活的资源管理能力,以协调系统资源、实现公平分配,保障各应用高效运行,从而为用户带来优质的使用体验。文章总结的五大问题,可归为两类:前三个涉及性能挑战,后两个属于生态挑战。微内核架构下,不同服务间需依赖IPC进行通信,相较于宏内核直接函数调用的方式,性能会有所下降。在新兴应用场景中,IPC的调用频率显著提升。据论文数据显示,智能手机平均每秒IPC调用达41,000次,智能汽车为7,000次,远超路由器等特定领域设备的0.6次。这不仅因为系统调用频率更高,达到每秒61,000次,是路由器的13倍,还涉及大量文件操作(从IPC到文件系统)以及内存映射文件上的高频页面错误(每秒5,000次)。这些页面错误需在内存管理器与文件系统间增加额外的IPC交互。微内核架构下通常缺乏统一的状态管理机制,每个服务模块需独立维护自身状态。在应用频繁调用需要集中管理状态的函数(如 poll 或文件映射)时,会出现大量重复状态和复杂的数据同步问题。这些状态管理的冗余会带来额外的进程间通信(IPC)需求,从而增加时间和内存开销。例如,在处理页面缓存未命中时,由于状态分散在不同模块中,IPC 的来回交互会使操作效率降低,进一步拖慢整体性能。微内核常采用基于能力的访问控制机制,将内核对象置于能力体系之下,从而增强系统安全性和可控性。然而,当某些内核对象(例如页表)需要频繁更新时,由于其被能力所封装,必须不断进行能力更新与权限验证,这会增加开销并降低性能表现。所谓POSIX兼容,实际上指的是API层面的兼容性,这意味着应用程序遵循一组标准API,在不同系统间进行开发与编译时能够实现代码级移植。对于特定领域的系统而言,这种兼容性或许已足够使用(尽管作者对此颇有微词,因为实际体验可能并不理想)。这类系统的程序多为定制化开发,通常拥有源码修改权限。然而,在新兴应用场景中,二进制分发的需求日益增多(例如OTA更新),此时仅依赖API兼容便显得力不从心。因此,要解决这一问题,就需要实现ABI兼容,也就是二进制层面的兼容性支持。路由器只需不到20个驱动程序,主要由内部维护,而车辆和手机则需超过700个。据估算,重写这些驱动程序需超5000人年,且要经过多年才能成熟并持续优化。因此,重写所有驱动不切实际,合理的选择是复用现有的设备驱动程序。鸿蒙系统基于三大设计原则,每个原则下包含多种策略,用于适应不同使用场景。HM秉持「微内核」设计理念,具备高安全性、可靠性和可扩展性。其「最小化」体现在内核空间精简,尽量将非必要组件移出内核态,以优化系统结构。这部分设计充分展现了HM系统与其他系统的不同之处,也是技术难度最高的环节。这些性能优化策略,是对原有微内核策略的「补充」而非「替代」。系统能够根据具体场景灵活选择和部署相应策略。例如,是否合并两个OS服务可依据系统服务场景定制,从而实现更高效的运行效果。

能免费利用linux生态的地方,尽量利用。这主要涉及两个策略:linux ABI兼容性是通过运行在IC0上的转换层shim实现的,它能够将所有的linux系统调用映射到对应的操作系统服务。这样一来,只要CPU架构相同,其他linux系统的二进制程序理论上都可以直接运行,无需修改或重新编译,从而实现良好的兼容性支持。2、借助驱动容器(Driver ContAIner,LDC)重用linux设备驱动程序,实现高效资源利用。之前提到,HM的最大特色是灵活,能在部署时根据场景选择不同配置,就像RPG游戏中的捏脸,可定制出自己想要的形态。例如:智能汽车应用场景2、手机使用场景论文测试环境为:基本操作系统功能测试:LMbench2、CPU性能测试:Geekbench单核得分显示,HM与linux表现相近。应用冷启动时间较linux快17%。负载方面,HM比linux低19%(几何平均),主要得益于最小化设计与细粒度访问控制的优化。丢帧率方面,HM采用定制QoS调度策略,使丢帧率降低10%,同时稳定性提升20%。视频与音频播放延迟优化:HM采用定制化体验优先策略,通过一次性完成所有处理流程,有效降低播放中断延迟。其中,视频延迟降低10%,音频延迟减少65%,大幅提升播放流畅性。智能路由器:系统内存占用减少30%,支持更多客户端连接,提升30%。智能汽车方面,系统冷启动时间从1.5秒(linux)缩短至0.6秒(HM),跨域通信延迟(仪表盘与娱乐系统)从250微秒降至100微秒。总体而言,HM是一个成熟度高、可投入生产的操作系统内核。代码分为两部分:核心内核与操作系统服务。我觉得,像HM这样的生产级操作系统项目,不仅对科研能力有要求,更考验工程能力和项目管理能力。论文中总结了研发过程中的若干经验和教训,例如优先保证兼容性再逐步本地化先完成部署再持续优化尽量采用自动化验证等,这些显然是在经历无数次试错后得出的宝贵结论。操作系统非我长期研究的领域,关注鸿蒙主要是因为它确实影响力广泛。十多年前,我曾在陈海波老师的实验室学习,目睹其团队不断壮大,深感荣幸并由衷欣慰。当年我研究的课题是让linux兼容Windows设备驱动,复杂度让我望而却步。如今看到类似项目在鸿蒙中取得成果,内心感慨万千,深感技术发展之迅猛。

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号