鴻蒙OS速覽

請保留 -> 【作者:張佩】

鴻蒙在HDC 2019上作爲最重要的產品被隆重推出,現在已經爲世人所知。它的三個重要特點是:

第一,它基於微內核的實現,可以很好地運行於IoT及安全相關的嵌入式場景中;
第二,它是分佈式架構,使得它可以很好地運行於多端協作的場景;
第三,它面向的是全場景的應用,囊括了像智能穿戴這樣的IoT設備、智慧大屏、智能終端以及PC機等。其中榮耀大屏(電視)是它第一個產品。

鴻蒙OS主要特性速覽和解析

preview

全場景應用:微內核和鴻蒙OS要分開看

讓一個OS實現全場景是很困難的,Windows系統嘗試過失敗了,基於Linux內核的衆多OS應該在各種場景中都存在着,但它們是不同公司的不同OS產品組成的。某種意義上,蘋果的OS有點全場景的意思,翻蓋了可穿戴、智能終端到PC。但從資料看,蘋果的多端OS的系統架構並未統一,雖然有信息認爲它們在朝着統一的方向做。

那麼,可想而知,華爲要讓HarmonyOS做到全場景應用支持,這件事情本身會有多困難了。從它現在公佈的資料可知,鴻蒙OS現在支持多種內核。我認爲這其實是它自研的微內核的能力尚淺,在智能終端和桌面這樣的傳統功能很重的應用中,微內核還無法勝任,而需要借力Linux內核甚至安卓系統的一些能力。

內核是可替換的,是鴻蒙OS的一個重大特徵。視角切換到安卓OS,它其實也不綁定Linux內核,而是通過HAL來抽象底層的內核實現,但其十餘年的發展至今,實際產品都只綁定Linux這個內核的。因爲畢竟要實現內核可替換,是一件很費事的系統工程,難度很大的。鴻蒙OS能做到3個內核兼容可替,技術上是很牛叉的事情。

具體是怎麼做到的?業界的一種標準做法是POSIX兼容。如果鴻蒙微內核是POSIX兼容的話,就相對容易。但從它已經開源的LiteOS來看,其並沒有實現POSIX接口。所以具體的實現細節,尚要等到鴻蒙的微內核開源了再看。

OS其實是一種操作環境,內核是用戶看不到的部分。在討論鴻蒙OS的時候,它更多表示的的是它的上層的軟件框架和運行環境。鴻蒙微內核只是它兼容的內核之一。華爲當前宣稱的一些基於鴻蒙OS的場景能力如智能終端,是基於Linux內核的。

[外鏈圖片轉存失敗(img-BFAihVrS-1567068282710)(https://github.com/Awesome-HarmonyOS/HarmonyOS/raw/master/assets/img/harmony/features.png)]

現在猜測是,鴻蒙OS的三種內核,分別用來適配不同的應用場景:LiteOS內核用於可穿戴和IoT場景、Linux內核用於智能終端應用場景、鴻蒙微內核使用於安全相關場景如TEE。華爲希望今後Harmony微內核能力會逐漸增強,並最終替代LiteOS和Linux內核的能力。

分佈式架構

分佈式這種OS架構在傳統意義上,是運行於服務器和數據中心上的,比如分佈式文件服務器、分佈式網絡服務器。在終端上使用分佈式架構,它的出發點其實是對於IoT時代萬物互聯的思考。當終端的IoT設備越來越多,不得不考慮它們之間更便捷、有效的互聯通訊的時候,一個存在於端上的分佈式OS,就有了其存在的價值了。

端上的分佈式OS場景現在可以舉兩個例子:

第一是智能汽車場景。華爲要以鴻蒙OS來控制汽車,不僅是車機,還能觸達終端傳感器。因爲它把自己的車業務定位爲汽車Tier 1方案商,硬件方案恰是它的分內業務,所以華爲有能力在汽車的各種大大小小的芯片上,應用其鴻蒙OS。在傳感器MCU上,它運行IoT版本的鴻蒙系統;在車機芯片上,它運行Linux版本的鴻蒙系統;在駕駛控制域芯片上,它運行微內核版本的鴻蒙系統。幾十個不同版本的鴻蒙OS在車裏面運行,聯合在一起就是一個很具規模的分佈式場景。

第二是各種智能終端在實際生活中的應用場景,典型的如智能家居、移動辦公等場景。HDC上華爲做了一個移動辦公的生動演示,雖然並非基於鴻蒙OS來實現的,但它是分佈式智能辦公的一種運用。演示時,女主角將華爲手機映射到PC上,可以在PC看到手機的整個屏幕,操作方法也完全和手機上一樣的。這種模式給她的辦公帶來了兩種便利:第一,可以用PC的鼠鍵來操作和打字;第二,手機和PC間的數據共享十分直接,操作手機上的數據,就像在PC本地上操作文件管理器一樣。

[外鏈圖片轉存失敗(img-6wkHZt75-1567068282710)(https://github.com/Awesome-HarmonyOS/HarmonyOS/raw/master/assets/img/harmony/harmonyos1.jpg)]

它的分佈式框架實現了四種能力:公共通信平臺,分佈式數據管理,分佈式能力調度和虛擬外設。

分佈式是一種比較高層次的架構,基於任何系統都可以搭建出不同的分佈式架構。但華爲想通過統一的鴻蒙系統來考慮和實施端上的分佈式架構,其最大的好處是開發環境和應用生態的統一,能把蛋糕做得更精更大。

它可以提供統一的應用接口,而將分佈式相關的底層技術隱藏起來,對應用開發者透明,使開發者能夠聚焦自身業務邏輯,像開發同一終端一樣開發跨終端分佈式應用,也使最終消費者享受到強大的跨終端業務協同能力爲各使用場景帶來的無縫體驗。

確定性和高性能

這是華爲的一個純粹的技術表述。它包含了兩個很不容易實現的技術點:軟件操作的延時確定性,IPC的高效性。任何一個系統如果能在這兩點上做好了,其系統一定是非常安全和高效的。但現在華爲在這兩個點上只透露了籠統的結論,沒有具體的過程數據和實現方法。

[外鏈圖片轉存失敗(img-Am3fWvAU-1567068282711)(https://github.com/Awesome-HarmonyOS/HarmonyOS/raw/master/assets/img/harmony/harmonyos2.jpg)]

從它簡單的論述中,我大概的推論是:它有一個確定時延引擎,可以確定一個任務的執行時間,根據它提供的信息,調度器可以相對確定地安排多個任務的優先級和執行時間片。和通用的調度器算法相比,這種實現的一個非常重要的不同處是,調度器知道更多的任務的執行細節。一般的調度器都是完全通用的,不需要對具體的任務有任何知識的;在鴻蒙這裏,調度器卻能夠知道任務的一個大概的執行時間。這種情況下,調度器可以安排出更緊密的調度秩序,從而提高調度效率。華爲宣稱它們將任務的響應時延降低了25.7%

另外,華爲宣稱對IPC進行了很好的優化,使得進程間通信效率提升了5倍。可能是和原生的安卓系統進行比較。

安全可信

安全性首先來自於微內核的“”。在HDC上終端總裁餘承東對此有過專業的表述,就是他們首次通過形式化驗證的方法,驗證了鴻蒙微內核的安全性。形式化驗證是很誇張的一個東西,HDC上還提供了一個數據應該是可供參考的:一行代碼如果要完成形式化驗證,需要爲它寫100行驗證代碼。

這是非常誇張的比例,基於這個數據,傳統內核就不可能完成形式化驗證,比如Linux內核現在即便精簡之後也超過千萬行的代碼量,形式化驗證就需要編寫10億行代碼,這在現實工程中幾乎是無法實現的。

一個典型的微內核代碼量是1w行左右。這只是一個大概的量級,具體不同的實現有高有低。如用於教學的Minix系統的內核大概4K行,工業上應用廣泛的OKL4內核約8K行。但也有代碼量多的,比如開源的面向智能終端應用的Fuchsia系統的內核,它現在有約6w行代碼,這是目前所知的最爲複雜的微內核實現。華爲稱鴻蒙微內核是Linux的千分之一,那麼大概是4w行左右的樣子。

[外鏈圖片轉存失敗(img-IHPuUplw-1567068282711)(https://github.com/Awesome-HarmonyOS/HarmonyOS/raw/master/assets/img/harmony/harmonyos3.jpg)]

從公開的信息看,鴻蒙的微內核的某個版本應該是已經完成了形式化驗證的。這非常了不起,在此之前公開資料的信息,只有OKL4是通過了形式化驗證的。從上面的代碼量看,OKL4的代碼量要遠遠小於鴻蒙的。這個版本的微內核當前作爲TEE系統在使用。

高效統一的開發框架

對開發者友好,就是對自己友好。開發者多了,生態纔會安順,生意纔會做大。

前面說了,他們要面向全場景應用來設計系統,並且實現了基於端的分佈式架構。就像古時候的大家族一樣,裏面有好多個小家庭,如果沒有強力的家族管理制度,各個小家庭就會各自爲政,最後甚至會有內訌。那麼多的應用場景,也需要有統一的開發和應用的框架來幫助開發者和使用者。華爲將提供支持多終端的統一的開發IDE,內置實現多語言編譯的方舟編譯器,提供可視化編程等。可以做到一次開發,多端部署。

img

官方數據:方舟編譯器可以提高安卓系統操作的流暢性24%,響應速度44%,第三方應用的流暢性高達60%。

結論

華爲這一次圍繞着鴻蒙OS這個名字,其實是打出了一套組合拳。鴻蒙只是這套組合拳的總名稱,裏面的招式卻有好多種,豐富得很。

  1. 鴻蒙是一個大袋子,裏面裝了很多種內核產品,並且將來還是可能變化的。鴻蒙OS和鴻蒙微內核要分開來看,不是說鴻蒙OS就一定用的鴻蒙微內核。但它可以爲不同的應用,使用不同的內核,對於它的全場景的目標是有利的。鴻蒙微內核有一個很大的野心,它將來在功能上要替代Linux和LiteOS,這是個將來的計劃。
  2. 鴻蒙微內核確實搞起來了,華爲對鴻蒙微內核下了血本,對其某個版本進行了形式化驗證並用作爲實際的TEE系統在應用。這此之前,業界僅有OKL4做過形式化驗證。這個安全證明的通過,對一些特殊的工業應用有重大意義。
  3. 分佈式架構和它的全場景應用的目標是一致的。分佈式架構有助於它的軟硬件生態的強化,環境中的多臺設備的協同作業,會大大增強用戶的使用體驗。
  4. 統一IDE等開發和應用的環境,將幫助其生態建設。方舟編譯器實現了多語言編譯,對於應用開發的性能提升幫助極大。華爲把很多系統級別的優化固化下來,沉澱爲一些系統能力或者生產工具,帶來了生態優勢。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章