華爲鴻蒙OS輕量內核設計理念與關鍵特性

9 月 10 日,在華爲開發者大會 2020 上,華爲消費者業務 CEO 餘承東宣佈推出鴻蒙 OS 2.0 版本(HarmonyOS 2.0),同時將鴻蒙 OS 的代碼捐贈給開放原子開源基金會進行開源孵化。根據華爲公佈的鴻蒙開源路標,即日起鴻蒙面向大屏、手錶、車機等 128KB-128MB 終端設備開源;2021 年 4 月,面向內存 128MB-4GB 終端設備開源;2021 年 10 月,將面向 4GB 以上所有設備開源。

鴻蒙 OS 開源項目: https://www.openatom.org/openharmony

鴻蒙 OS 代碼倉庫: https://openharmony.gitee.com/

本文將進一步介紹鴻蒙OS的輕量級內核,包括其設計理念、做了哪些優化以及關鍵特性。本文由InfoQ整理自華爲開發者大會2020技術論壇演講《HarmonyOS內核設計》,由華爲消費者業務OS平臺資深專家王米虎分享,內容未經本人確認。

HarmonyOS輕量內核設計理念

華爲很早就推出了面向物聯網領域開發的輕量級操作系統LiteOS,這個系統可以很好地支撐小芯片,但是要支撐更多複雜的上層應用框架和服務,還需要對其內核做大量的改進。

縱觀IoT產品的發展趨勢,硬件能力變得越來越強大,功能也越來越豐富。早前的IoT硬件功能比較簡單,只需要跑在M核上,再加一些簡單的協議就可以了,內核大小通常只有幾十KB級別;後面出現了攝像頭等新設備,需要跑在A核處理器上,支持少量AI功能,內核之上的組件越來越豐富;到近幾年,很多設備都配備有屏幕,給系統內核帶來了比較大的需求改變,只有內核已經無法滿足需求,上面還需要有應用、UI、圖形界面、多媒體。在這種挑戰下,內核應該怎麼做?

目前業界IoT設備有幾種比較典型的解決方案。在資源受限的場景下,一般採用的是RTOS方案,好處是內存佔用小、啓動速度快、實時性高;但缺點也很明顯,首先RTOS系統生態不夠完善,驅動核第三方庫比較複雜,移植工作量很大,另外,RTOS應用和內核不能隔離,都在統一的內存地址空間,應用代碼引起的系統異常會掛死在內核,導致應用開發和產品開發無法解耦。如果基於RTOS方案開發Harmony OS的內核,上述問題都會給研發團隊帶來比較大的困難,並且也提高了支撐解決方案的技術人員的技術門檻。

業界另一個解決方案是基於Linux的方案,優點是驅動和三方庫生態軟件完善,移植適配也比較容易,而且應用與內核隔離,應用可以在自身獨立空間中運行,確保不同應用間安全、穩定,可支撐複雜交互體驗設備開發;缺點是內存佔用大、啓動速度慢、實時性偏弱。

而華爲Harmony OS的輕量內核設計目標是要同時實現類Linux的開發體驗和RTOS的運行效果,主要從以下三個維度來做:

首先在上層增加了POSIX標準庫,支撐比較豐富的API(目前已經支持1000多個POSIX接口),以使生態軟件可以比較方便地移植到Harmony OS上;其次是內核機制增強,增加了多進程、虛擬內存,希望生態應用能夠跟內核區分開來,應用掛掉之後只會掛在它的用戶態,而不會影響其他應用,也會相對安全,後來又增加了動態鏈接,開發者拿到對應的編譯工具鏈之後就可以在Linux上編譯出標準的ELF文件,然後直接在Harmony OS上運行,給開發體驗帶來了很大的差異;最後是底層設計了HDF統一驅動框架,以實現一次開發跨設備、跨系統驅動共享。

HarmonyOS輕量內核關鍵特性

多進程

從系統的角度看,進程是資源管理單元。OpenHarmony內核的進程模塊可以給用戶提供多個進程,實現進程之間的切換和通信,幫助用戶管理業務程序流程。這樣用戶可以將更多的精力投入到業務功能的實現中。

OpenHarmony內核中的進程採用搶佔式調度機制,支持時間片輪轉調度方式和FIFO調度機制。OpenHarmony內核的進程一共有32個優先級(0-31),用戶進程可配置的優先級有22個(10-31),最高優先級爲10,最低優先級爲31。高優先級的進程可搶佔低優先級進程,低優先級進程必須在高優先級進程阻塞或結束後才能得到調度。每一個用戶態進程均擁有自己獨立的進程空間,相互之間不可見,實現進程間隔離。用戶態根進程Init由內核態創建,其它用戶態進程均由Init進程fork而來。

多核

目前Harmony OS在支持多核的同時也支持把任務分發到不同CPU上面去,不過還沒有做很複雜的負載均衡,因爲在IoT設備上目前看不是很有必要,後面可以再做擴展。

虛擬內存

虛擬內存主要是爲了配合多進程來做到應用之間的隔離,支持用戶態內存通過缺頁異常按需分配。物理內存採用的是經典的管理方式,內核態地址空間是1-4G,用戶態內核空間是0-1G,從而減少用戶態進程頁表項。內核採用靜態映射,提升虛實轉化效率。

動態鏈接

Harmony OS的動態鏈接特徵包括:

  • 按需加載:多應用共享代碼段,加載最小單元爲頁;
  • 符號綁定:支持立即和延遲綁定;
  • 加載地址隨機化:進程代碼段、數據段、堆棧段地址隨機化。

權限管理

Harmony OS爲IoT設備引入了一個比較輕量級的權限管理,做到了進程級別的權限控制,只有授權的進程纔可以訪問系統資源。Disc方面引入了用戶組的概念,可以根據進程uid的配置靈活劃分文件資源歸屬和管控。

文件系統

Harmony OS文件系統採用的是目前業界比較通用的實現方式。

更多鴻蒙OS開發者文檔,詳見:
https://gitee.com/openharmony/docs

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章