聊一聊華為新發布的鴻蒙 OS

文章推薦指數: 80 %
投票人數:10人

在 HDC 2019 上余承東正式發布了華為的鴻蒙系統(英文名 HarmonyOS)並且宣布了開源,本想著去知乎上看一下有沒有大牛的技術解讀,結果發現整個鴻蒙發布相關的問題中大多數答案都在沸騰,毫無乾貨。

看了一圈之後,抱著一個不是很好的心情在這個問題下寫了一個吐槽,沒想到獲得了很多贊同,說明大家對沸騰還是挺反感的。

所以今天,筆者就在這邊跟大家來聊點關於鴻蒙 OS 的乾貨。

華為的 HDC 並非是一場「新品發布會」,而是一場「開發者大會」,它和 Google 的 I/O,蘋果的 WWDC,微軟的 Build 一樣都是面向開發者召開的, 其中主題演講的受眾面會更廣一些,在主題演講上各家也會放出自家的一些新鮮的技術產物,華為的 HDC 也是如此。

但是本質上 HDC 還是一場開發者大會,所以我們更多地還是要結合技術去談內容,而不是看完發布會就沸騰,高呼「華為牛逼」。

在發布會上,華為實際只用了很短的一段時間來介紹鴻蒙 OS,相較於整個主題演講數小時的時長來說只是冰山一角。

華為給鴻蒙 OS 的定義是「基於微內核的全場景分布式 OS」,在大會上華為也提到鴻蒙 OS 將會在未來開源,這或許和華為想要借開源來加速鴻蒙 OS 生態建設以及現有鴻蒙 OS 有集成 Linux 內核有關。

現階段華為對鴻蒙 OS 的定位非常清晰,這個作業系統的架構是「微內核」,其次這個作業系統在應用上是「全場景」的,由於它能夠用於很多設備,所以這個作業系統是「分布式」的。

一上來,華為就拋出了 3 個名詞,看得普通看客是雲裡霧裡。

鴻蒙 OS 的微內核架構是非常值得一說的東西,目前全球市場仍然是宏內核的天下,其中 Linux、Unix 就是典型的宏內核 OS,Windows 的 Windows NT 最初有打算設計成一個微內核 OS,但是在微軟這麼多年來不斷的更新、修補之後 Windows NT 也變得很龐大,已經脫離了微內核的範疇(例如據說他們把 GUI 方面的實現也放到了內核里),蘋果的 OS 號稱是微內核但實際爭議還是很大,和 Windows NT 類似,這兩個系統內核更傾向於是「混合內核」。

微內核這個技術由於在很多年前被業內普遍不看好,加上 Unix、Linux 等宏內核作業系統的成功而一度未能發展起來,直到物聯網成為科技的熱門發展趨勢之後,微內核才逐漸被科技行業的頭部公司重視起來。

例如 Google 正在開發的 Fuchsia 就是一個基於 Zircon 微內核的作業系統。

比較巧合的是 Google 對 Fuchsia 的定位是「一個能夠運行在 IoT 設備以及便攜移動設備上的作業系統」,這一點和鴻蒙 OS 似乎有一些異曲同工。

這就要提到微內核 OS 的優勢了,微內核本身代碼量很少、體積很小,只擁有作業系統管理硬體資源的基礎功能,其他諸如對接應用的 IPC、硬體的驅動、文件系統等等都是基於微內核上層的、運行於用戶態的服務來實現的。

這使得一個微內核的作業系統中各個部分的耦合度很低,系統的可移植性很高。

除此之外,由於服務運行在用戶態內,不能直接接觸到內核,所以系統總體的安全性更高,而且系統本身也具有更強的穩定性,因為不同的服務模塊是相互獨立的,某一個模塊出了問題崩潰了只需要對某一個模塊進行重啟即可,不會引發整個系統的全面崩潰。

微內核的優勢使其非常適用於多種多樣的 IoT 設備、便攜移動設備,這剛好符合華為期望用鴻蒙 OS 實現「萬物互聯」的一個目標,這也就解釋了鴻蒙 OS 定義的第二個名詞 —— 「全場景」。

鴻蒙 OS 可以基於其強大的移植性在各種各樣的設備上運行,適用於各種應用場景,且能夠通過網絡實現互聯。

然而,微內核架構的效率問題卻阻礙了微內核的發展,這也是 Windows NT、Mac OS X 最終走向混合內核這條路的一個重要原因。

微內核系統的每個服務模塊是獨立的,如果他們之間要相互合作,那麼中間就會涉及到服務之間的通信,在微內核系統中,一個很簡單的系統調用可能也會涉及到比較複雜的底層服務通信,而在宏內核中,這只是內核內部簡單的函數調用而已。

如果要把微內核的效率提上去,微內核系統的架構就會變得更加複雜,而且效率也仍然不理想。

這也是為什麼在大會上華為重點提到了 IPC 性能的提升,這是鴻蒙 OS 採用微內核架構必須要面對的問題,具體鴻蒙 OS 能把 IPC 性能提升到什麼程度還不是很好評估,但是從上海交大陳海波教授的團隊加入華為來看,鴻蒙 OS 在 IPC 性能的提升上確實能有兩把刷子。

這個團隊有兩個獨有的提升 IPC 性能的方法,一個是 XPC,另一個是 SkyBridge,具體有相關的論文可查。

其中 SkyBridge 就能夠對微內核的性能起到一個明顯的提升作用,上圖的文字截取自相關論文。

「微內核」架構除了內核體積小、精簡、可移植性高外還有其他的優勢,例如微內核的形式化驗證、實時性、安全性等,其中內核的形式化驗證是一個。

目前的鴻蒙 OS 並非是一個「純粹的微內核系統」,因為鴻蒙 OS 的底層擁有 3 個不同的內核,分別是 Linux 內核、鴻蒙微內核以及 LiteOS,其中 LiteOS 是華為面向物聯網設備打造的一個低功耗、超輕量的作業系統。

顯然,一個作業系統內有三個內核是非常不合理的事情,這也是為什麼在結構圖中華為重點提到未來鴻蒙 OS 只有鴻蒙微內核。

至於為什麼現在一個 OS 的基礎服務要對接三個不一樣的內核,筆者個人認為應該是鴻蒙 OS 的內核現在本身還不夠成熟,還處於一個較早期的架構階段,所以用於實際產品上內核還是要用 Linux 或者是 LiteOS。

從後續 LiteOS 的演講來看,未來 LiteOS 會合併到鴻蒙微內核內,兩個 OS 之間的內核拉通,而 Linux 內核本身是一個宏內核,如果鴻蒙 OS 進展順利,它後續肯定不會在被鴻蒙 OS 囊括在內。

基於華為的 RoadMap,我們可以看到現有的、實裝在產品上的鴻蒙 OS 1.0 是「基於開源框架,關鍵模塊自研」的作業系統,所以它大機率是基於 Linux 魔改而來的。

而鴻蒙 OS 2.0 才會實現整個內核的自研和應用,也就是上面結構圖中底層只有鴻蒙微內核這一個內核的鴻蒙 OS。

到了鴻蒙 OS 3.0,華為才會開始做高性能 IPC,也就是上文我們提到的內容。

這個 RoadMap 表明華為在今年 HDC 上公開的內容更多還是畫餅,實際上現在鴻蒙 OS 仍然一個是比較早期的階段。

值得關注的是華為在 RoadMap 上還是很克制的,他們並沒有提到鴻蒙 OS 會用在手機上,雖然余承東說如果需要在手機上啟用,他們隨時都可以啟用,但是實際上鴻蒙 OS 如果真的到了 2.0 去掉了 Linux 內核,那麼它用在手機上可能是災難性的,因為拋棄掉 Linux 內核之後,鴻蒙 OS 將難以實現對 Android 生態的兼容。

華為自己也清晰地意識到了「生態」這個問題,所以他們表示只要 Android 能用,那麼手機肯定是優先用 Android 的。

在鴻蒙 OS 的結構圖上我們能注意到一個比較有意思的東西,它叫「分布式軟總線」。

這就來到了華為對鴻蒙 OS 定義的第三個名詞,「分布式」。

這一個部分其實很有意思,但是很遺憾的是華為並沒有在大會上講好這一部分,給出的細節也很有限。

華為這裡用「分布式」這個詞或許有一些不太恰當,因為分布式指的是某一組設備對外呈現的是「統一的整體」,這組設備擁有一個全局的方法來管理資源,設備與設備之間過網絡實現信息交換。

在實際應用中,就是一個總體的系統拆分成不同的子系統(或是一個業務拆分成不同的子業務),不同的子系統部署在分散的伺服器上,這些子系統之間能夠通過網絡基於某種方式交換數據。

例如上圖就是一個很簡單的分布式系統,對於瀏覽器來說,他們看到的都是同樣的網頁,但實際上這個網頁服務背後是負載均衡、緩存、多個 Web 伺服器組成,這些服務都分散在不同的設備上。

這也就相當於一個應用被拆分成了多個模塊放在多個設備上來部署運行,不同的模塊負責不同的功能,這是「分布式」的概念。

華為在鴻蒙 OS 中用「分布式」這個詞不當的地方在於,鴻蒙 OS 本身是完整的,它並沒有某些模塊拆分出去在別的設備運行,而對於用戶來說這個作業系統還是一個統一的整體這樣的情況存在。

相較而言,這裡的「分布式」替換為「設備互聯」這一個概念更為準確。

之所以成為分布式,主要是因為鴻蒙 OS 的設備 A 可以基於網絡連到設備 B,通過軟總線將這個設備 B 的某一部分虛擬成設備 A 自己的,對外看起來好似 A 和 B 是一個一體的、完整的設備,但是實際上 A 和 B 兩個獨立的設備,亦或是連接到一起的功能實際上是運行在兩個不同的設備上。

這一段話在理解上可能會有點困難,舉個例子。

比如說打視頻電話,我用手機撥打電話,但是使用電視的攝像頭來採集畫面,這個操作中手機和攝像頭就連接到了一起,看似手機和電視的攝像頭是一起的,但是實際上這屬於兩個不同的設備。

這就是鴻蒙 OS 中「分布式」的概念,即把別的設備上的東西當成自己的來用,我在一個設備上可以接觸或使用到網絡內其他設備的眾多功能。

這個技術和「分布式」概念類似的地方在於,在軟總線下,某一網絡內所有的硬體資源會匯聚成一個虛擬的資源池供上層的應用使用,對外(上層應用)來看這個虛擬的硬體資源池就是一個整體,類似於一個虛擬的、完整的設備,應用則運行在這個虛擬的設備上。

應用調用這些虛擬硬體資源的時候,軟總線實際會根據某一策略在調用位於不同設備上的不同硬體資源,實現各個終端之間的所謂「互助共享」。

這和「分布式」的概念是類似的,但是二者還是有明顯差別,因為這明顯不是「整體拆分為部分」,而是「部分組成虛擬整體」,所以套「分布式」這個概念筆者個人認為還是略有牽強。

但總的來說,這個分布式軟總線是鴻蒙 OS 最有意思的地方之一,只是很遺憾華為公開的技術細節還是太少。

關於分布式軟總線,筆者很在意的一個細節是華為有提到原本的網絡協議棧被華為縮減為了一層,華為的極簡協議中他們甚至把網絡通信基本的 TCP/UDP 以及 IP 都給壓縮掉了,這確實讓人覺得很神奇。

由於這個協議是分布式軟總線中的重要一環,所以它應該會隨著鴻蒙 OS 一起開源,屆時我們就能夠看到華為到底在網絡通信上做了什麼樣的創新。

在結構圖中還有另一個值得注意的點 —— 多 Runtime。

這裡我們注意到方舟編譯器本身確實是有一套 Runtime 的,這說明方舟編譯器編譯出來的東西必須要配套 Runtime 才能運行,同時這也說明鴻蒙 OS 上的應用生態和方舟編譯器之間會有很大的關聯,方舟編譯器是一步非常重要的棋。

除此之外,還有一套 Runtime 是「Web」,這也是一個很值得關注的點。

Web 本身就有跨平台的特性,現在也被廣為用來開發各種業務邏輯不是很複雜、性能要求不是很高的跨平台應用。

Web 相關 Runtime 的加入在筆者看來可以給鴻蒙 OS 的發展帶來更多的可能,例如基於這一套 Runtime 華為甚至可以基於鴻蒙微內核直接打造一個上層介面、應用都完全基於 Web 的雲作業系統。


總體來看,HDC 上鴻蒙 OS 部分的信息量很足,但是感覺畫餅居多,乾貨居少。

可以確定的是鴻蒙 OS 目前還只是一個相對早期的階段,很多東西還有待華為後續推進開發。

作為一個自主的 OS,鴻蒙 OS 的具有很好的發展前景,國家也肯定十分支持華為推動鴻蒙 OS 的研發。

對華為來說,他們現階段要面對的最大問題就是生態,雖然鴻蒙 OS 決定開源,但是開源是否能夠讓這個 OS 的生態蓬勃發展還不好說。

對於我們這些消費者來說,我們更需要關心的是鴻蒙 OS 是否能夠邁出華為硬體的圈子,如果鴻蒙 OS 只是一個限定在華為硬體圈內的作業系統,那麼它註定會和蘋果的作業系統一樣很難走進千家萬戶,當然,這並不是很影響鴻蒙 OS 做大做強罷了。


請為這篇文章評分?


相關文章 

隻身一鴻蒙,挑戰世界各大作業系統

文/大象PDK8月9日,華為正式在華為全球開發者大會上發布了自有作業系統:鴻蒙。鴻蒙作業系統的發布也引起了美國方面的注意。我們都知道,近些年來,有關中美之間的貿易問題,已經鬧得沸沸揚

華為鴻蒙系統問世!這套系統到底牛在哪裡?

都市快報 首席記者 梁應傑 部分內容綜合央視新聞、環球網小時候聽過盤古開天地故事的人,可能還記得開篇的一句話:「鴻蒙初開,天地混沌」,短短8個字交代了盤古出生時的環境。古人認為天地開闢之前,世界...

關於鴻蒙OS,你應該了解的10個問題

用萬眾矚目來形容剛剛過去的華為開發者大會(HDC2019),絲毫不為過。在這場擁有5000多人規模,聲勢浩大的大會上,華為大張旗鼓地秀出了自己的肌肉:制裁風波後依然高速增長的業績表現,子品牌榮耀...