演講嘉賓 | 代 杰
回顧整理 | 廖 濤
排版校對(duì) | 宋夕明
嘉賓介紹
OS內(nèi)核及視窗分論壇
代杰,華為OS內(nèi)核實(shí)驗(yàn)室驅(qū)動(dòng)領(lǐng)域?qū)<摇?/p>
正文內(nèi)容
設(shè)備驅(qū)動(dòng)程序在內(nèi)核中扮演著至關(guān)重要的角色,其直接與硬件設(shè)備交互,為操作系統(tǒng)和應(yīng)用程序提供硬件操作的接口,并管理系統(tǒng)中的硬件資源。目前,HarmonyOS NEXT的內(nèi)核驅(qū)動(dòng)在兼容性和競爭力構(gòu)建上有哪些挑戰(zhàn)和機(jī)遇?華為OS內(nèi)核技術(shù)專家代杰在第三屆OpenHarmony技術(shù)大會(huì)上進(jìn)行了精彩分享。
驅(qū)動(dòng)生態(tài)復(fù)雜度高:既包含了南向生態(tài)(面向器件),也包含了部分北向生態(tài)(面向應(yīng)用);既包含了硬件外設(shè)(UFS、GPU等),也包含了虛擬設(shè)備(random、loop、dm、dmabuf 等);既包含了硬件控制器(UFS host),也包含了協(xié)議層(SCSI、USB、DRM等)。對(duì)于 HarmonyOS NEXT 這樣一個(gè)新生的操作系統(tǒng)來說,驅(qū)動(dòng)生態(tài)對(duì)其內(nèi)核意味著什么?
先讓我們看一組數(shù)據(jù):在Linux超過3000萬行的代碼中,有60%是驅(qū)動(dòng)代碼,重新開發(fā)需要耗費(fèi)大量的人力和時(shí)間成本,且部分廠商不提供源碼;以手機(jī)為例,驅(qū)動(dòng)超過400個(gè),涉及內(nèi)核的接口超過1000個(gè),代碼量超過400萬行。此外,應(yīng)用生態(tài)上有POSIX標(biāo)準(zhǔn),但驅(qū)動(dòng)生態(tài)上卻缺乏統(tǒng)一的標(biāo)準(zhǔn)。因此,兼容Linux的驅(qū)動(dòng)生態(tài)是從NEXT內(nèi)核誕生時(shí)就需要考慮的問題。
HarmonyOS NEXT內(nèi)核采取了UDK(Unified Driver Kit)技術(shù),通過統(tǒng)一驅(qū)動(dòng)框架,支持多個(gè)后端的方案,使其更好地兼容Linux的驅(qū)動(dòng)生態(tài)。該技術(shù)的特點(diǎn)主要有:既能運(yùn)行NDC(Native Driver Container),也能運(yùn)行LDC(Legacy/Linux Driver Container),且可以幾乎零修改兼容Linux的驅(qū)動(dòng);驅(qū)動(dòng)框架和驅(qū)動(dòng)運(yùn)行在獨(dú)立的進(jìn)程空間。業(yè)界與UDK同類的項(xiàng)目如Genode DDEKit、Linux Kernel Library、VMWare vmklinux等,均因性能、兼容性以及版本演進(jìn)等因素未成功。那么UDK目前面臨的核心技術(shù)挑戰(zhàn)有哪些?
LDC 側(cè)面臨的核心技術(shù)挑戰(zhàn)主要有:(1)如何具備跨 Linux 版本的演進(jìn)能力?驅(qū)動(dòng)版本碎片化已經(jīng)成業(yè)界痛點(diǎn),DDEKit 就因跟不上 Linux 版本演進(jìn)而放棄;(2)兩個(gè)內(nèi)核模型如何對(duì)接,Linux 內(nèi)核機(jī)制如何在用戶態(tài)來表達(dá)?(3)性能及內(nèi)存開銷問題,例如跨進(jìn)程通信開銷、內(nèi)存拷貝開銷等;(4)與原生容器并存和過渡問題。
針對(duì)上述問題(1),可以采用Base + Model架構(gòu),分離較為穩(wěn)定的基礎(chǔ)KABI和易變KABI,便于跟隨版本演進(jìn)(DC-Base:包含不易隨版本變化的穩(wěn)定的KABI;DC-Model:包含易變的KABI集合),使其能夠在Linux發(fā)行版上實(shí)現(xiàn)多版本驅(qū)動(dòng)并存功能。
針對(duì)上述問題(2),可以采取可擴(kuò)展內(nèi)核語義映射框架。Extension:host 側(cè)向 LDC 提供的功能擴(kuò)展,將 NEXT 內(nèi)核的能力做一層封裝,實(shí)現(xiàn)與 Linux 內(nèi)核基本等價(jià)的接口供驅(qū)動(dòng)使用;interface ko:提供 host 與驅(qū)動(dòng)交互通道,完成 host/linux 名字空間轉(zhuǎn)換。
NDC 側(cè)面臨的核心技術(shù)挑戰(zhàn)主要有:(1)目前,NDC 巨量的接口缺失,生態(tài)不完備,Linux 面向驅(qū)動(dòng)的上萬接口難以重新實(shí)現(xiàn)。且短期看,NDC只能運(yùn)行在受限場景,無法完全舍棄 LDC;(2)用戶態(tài)的驅(qū)動(dòng)框架性能和宏內(nèi)核仍存在差距。文件系統(tǒng)和驅(qū)動(dòng)的交互多一次進(jìn)程間通信,驅(qū)動(dòng)和內(nèi)存的交互同樣需要進(jìn)程間通信,且交互更為頻繁,例如 GPU 驅(qū)動(dòng)需要頻繁地申請(qǐng)、釋放內(nèi)存。
針對(duì)上述(1)的 NDC 接口缺失問題,NEXT 內(nèi)核采取 LDC/NDC 多模共存的方案,實(shí)現(xiàn)生態(tài)上的抽屜式替換。從NDC和LDC的二選一階段,逐步演進(jìn)到LDC/NDC的多模同時(shí)部署:所有的驅(qū)動(dòng)和設(shè)備由 devmgr 同一管理,devmgr 可以路由到“正確”的驅(qū)動(dòng)容器;NDC 可以抽屜式替換 LDC 中的驅(qū)動(dòng),能夠做到實(shí)現(xiàn)一個(gè),替換一個(gè),按重要程度逐步替換。此外,采取“孿生驅(qū)動(dòng)”(Twin Driver)模式,針對(duì)代碼量巨大的驅(qū)動(dòng),為減小工作量,使用雙驅(qū)動(dòng)容器協(xié)同方式:將核心的數(shù)據(jù)路徑,和上層應(yīng)用交互的路徑由 NDC 承載,設(shè)備節(jié)點(diǎn)由 NDC 創(chuàng)建;上下電、初始化等功能仍通過 LDC 承載。
針對(duì)上述(2)的性能問題,可以采用 NDC 多態(tài)部署方案,實(shí)現(xiàn)安全和性能的權(quán)衡。NDC 中的關(guān)鍵驅(qū)動(dòng),例如 UFS 存儲(chǔ)設(shè)備和 VFS 部署在同一個(gè)地址空間,其他驅(qū)動(dòng)則部署在獨(dú)立的地址空間。同時(shí),中斷通過遷移線程模型直通用戶態(tài)驅(qū)動(dòng)框架,解決傳統(tǒng)的中斷在用戶態(tài)處理,需要經(jīng)過調(diào)度的問題,可以將時(shí)延壓縮到 2us 以內(nèi)。
未來,隨著HarmonyOS NEXT生態(tài)和技術(shù)的發(fā)展,驅(qū)動(dòng)框架作為北向和南向的生態(tài)中樞,有很多的機(jī)會(huì)。例如,提供更多的信息到應(yīng)用層,實(shí)現(xiàn)精準(zhǔn)的性能功耗控制;打破傳統(tǒng)的分層解耦,簡化關(guān)鍵協(xié)議、關(guān)鍵路徑等等。
-
Next
+關(guān)注
關(guān)注
0文章
7瀏覽量
6129 -
HarmonyOS
+關(guān)注
關(guān)注
79文章
2052瀏覽量
32120
發(fā)布評(píng)論請(qǐng)先 登錄
第三屆百度文心杯創(chuàng)業(yè)大賽啟動(dòng)
德力西電氣亮相第三屆中國碳金融大會(huì)
立儀科技受邀參加第三屆中國傳感器與應(yīng)用技術(shù)大會(huì)

線上逛展 | 沉浸探索第三屆OpenHarmony技術(shù)大會(huì)五大展區(qū)
焦點(diǎn)直擊 | 一圖盡覽第三屆OpenHarmony技術(shù)大會(huì)
第三屆OpenHarmony技術(shù)大會(huì) 生態(tài)企業(yè)分享創(chuàng)新成果,共繪開源系統(tǒng)新藍(lán)圖

市場活動(dòng) | 潤和軟件星閃業(yè)務(wù)亮相第三屆OpenHarmony技術(shù)大會(huì)

高燃回顧|第三屆OpenHarmony技術(shù)大會(huì)精彩瞬間
第三屆OpenHarmony技術(shù)大會(huì)主論壇嘉賓演講大咖金句聚焦

深開鴻亮相第三屆OpenHarmony技術(shù)大會(huì),以技術(shù)驅(qū)動(dòng)OpenHarmony生態(tài)發(fā)展

迅龍軟件受邀參加第三屆OpenHarmony技術(shù)大會(huì),共建共享鴻蒙生態(tài)

第三屆OpenHarmony技術(shù)大會(huì)在上海成功舉辦
第三屆OpenHarmony技術(shù)大會(huì)亮點(diǎn)紛呈

評(píng)論