第三届大会回顾第2期 | HarmonyOS NEXT内核驱动生态兼容与竞争力思考
演讲嘉宾 | 代 杰
回顾整理 | 廖 涛
排版校对 | 宋夕明
嘉宾介绍
OS内核及视窗分论坛
代杰,华为OS内核实验室驱动领域专家。
正文内容
设备驱动程序在内核中扮演着至关重要的角色,其直接与硬件设备交互,为操作系统和应用程序提供硬件操作的接口,并管理系统中的硬件资源。目前,HarmonyOS NEXT的内核驱动在兼容性和竞争力构建上有哪些挑战和机遇?华为OS内核技术专家代杰在第三届OpenHarmony技术大会上进行了精彩分享。
驱动生态复杂度高:既包含了南向生态(面向器件),也包含了部分北向生态(面向应用);既包含了硬件外设(UFS、GPU等),也包含了虚拟设备(random、loop、dm、dmabuf 等);既包含了硬件控制器(UFS host),也包含了协议层(SCSI、USB、DRM等)。对于 HarmonyOS NEXT 这样一个新生的操作系统来说,驱动生态对其内核意味着什么?
先让我们看一组数据:在Linux超过3000万行的代码中,有60%是驱动代码,重新开发需要耗费大量的人力和时间成本,且部分厂商不提供源码;以手机为例,驱动超过400个,涉及内核的接口超过1000个,代码量超过400万行。此外,应用生态上有POSIX标准,但驱动生态上却缺乏统一的标准。因此,兼容Linux的驱动生态是从NEXT内核诞生时就需要考虑的问题。
HarmonyOS NEXT内核采取了UDK(Unified Driver Kit)技术,通过统一驱动框架,支持多个后端的方案,使其更好地兼容Linux的驱动生态。该技术的特点主要有:既能运行NDC(Native Driver Container),也能运行LDC(Legacy/Linux Driver Container),且可以几乎零修改兼容Linux的驱动;驱动框架和驱动运行在独立的进程空间。业界与UDK同类的项目如Genode DDEKit、Linux Kernel Library、VMWare vmklinux等,均因性能、兼容性以及版本演进等因素未成功。那么UDK目前面临的核心技术挑战有哪些?
LDC 侧面临的核心技术挑战主要有:(1)如何具备跨 Linux 版本的演进能力?驱动版本碎片化已经成业界痛点,DDEKit 就因跟不上 Linux 版本演进而放弃;(2)两个内核模型如何对接,Linux 内核机制如何在用户态来表达?(3)性能及内存开销问题,例如跨进程通信开销、内存拷贝开销等;(4)与原生容器并存和过渡问题。
针对上述问题(1),可以采用Base + Model架构,分离较为稳定的基础KABI和易变KABI,便于跟随版本演进(DC-Base:包含不易随版本变化的稳定的KABI;DC-Model:包含易变的KABI集合),使其能够在Linux发行版上实现多版本驱动并存功能。
针对上述问题(2),可以采取可扩展内核语义映射框架。Extension:host 侧向 LDC 提供的功能扩展,将 NEXT 内核的能力做一层封装,实现与 Linux 内核基本等价的接口供驱动使用;interface ko:提供 host 与驱动交互通道,完成 host/linux 名字空间转换。
NDC 侧面临的核心技术挑战主要有:(1)目前,NDC 巨量的接口缺失,生态不完备,Linux 面向驱动的上万接口难以重新实现。且短期看,NDC只能运行在受限场景,无法完全舍弃 LDC;(2)用户态的驱动框架性能和宏内核仍存在差距。文件系统和驱动的交互多一次进程间通信,驱动和内存的交互同样需要进程间通信,且交互更为频繁,例如 GPU 驱动需要频繁地申请、释放内存。
针对上述(1)的 NDC 接口缺失问题,NEXT 内核采取 LDC/NDC 多模共存的方案,实现生态上的抽屉式替换。从NDC和LDC的二选一阶段,逐步演进到LDC/NDC的多模同时部署:所有的驱动和设备由 devmgr 同一管理,devmgr 可以路由到“正确”的驱动容器;NDC 可以抽屉式替换 LDC 中的驱动,能够做到实现一个,替换一个,按重要程度逐步替换。此外,采取“孪生驱动”(Twin Driver)模式,针对代码量巨大的驱动,为减小工作量,使用双驱动容器协同方式:将核心的数据路径,和上层应用交互的路径由 NDC 承载,设备节点由 NDC 创建;上下电、初始化等功能仍通过 LDC 承载。
针对上述(2)的性能问题,可以采用 NDC 多态部署方案,实现安全和性能的权衡。NDC 中的关键驱动,例如 UFS 存储设备和 VFS 部署在同一个地址空间,其他驱动则部署在独立的地址空间。同时,中断通过迁移线程模型直通用户态驱动框架,解决传统的中断在用户态处理,需要经过调度的问题,可以将时延压缩到 2us 以内。
未来,随着HarmonyOS NEXT生态和技术的发展,驱动框架作为北向和南向的生态中枢,有很多的机会。例如,提供更多的信息到应用层,实现精准的性能功耗控制;打破传统的分层解耦,简化关键协议、关键路径等等。
- 第三届大会回顾第2期 | HarmonyOS NEXT内核驱动生态兼容与竞争力思考
- 封盖机PLC数据采集到MES系统
- 索尼将于5月28日发布FX2相机 搭载3300万像素传感器
- 2024全球芯片公司NVIDIA居首 英飞凌、意法半导体跌出前十
- 同惠TH2851精密阻抗分析仪实验室使用规范
- 四款机器人芯片亮相:赋能智能交互与精准控制新纪元
- 告别漫长等待! 3D测量竟然可以如此的丝滑
- 上海微系统所卫星激光通信用高精度MEMS快反镜取得进展
- 联想发布天禧个人智能体!Moto razr 60系列和Y9000P 2025全系搭载
- 声波解码器:当40kHz遇见AIoT时代
- 全球首次!民营企业核聚变装置实验取得重大突破
- 谷歌三星高通联手!Android XR登场,智能眼镜应用生态重塑
- 乐鑫科技产品线概览及 ESP32-C5 量产后的市场影响
- 端侧AI暗战开启!2024年蓝牙企业业绩集体上涨,Q1净利暴增近10倍
- 风电场浪涌保护器部署、选型方案与行业应用
- 带你仪表了解,什么是直流电能表?