|
鴻蒙OS與Fuchsia OS的異同, 最近行業(yè)內(nèi)最熱門的,可能就是這個華為鴻蒙OS的第一次正式亮相了。
作為知乎上Fuchsia OS的答主,自然也收到了大量的關于比較兩個操作系統(tǒng),或是評價鴻蒙OS的邀請。
在此之前,我一直沒有回應這類邀請。主要原因還是在于現(xiàn)階段華為公布出來的信息量實在太少,雖然官方聲稱將會全面開源,但終究還沒有開源,甚至連大家能買到的設備或是下載的系統(tǒng)鏡像都還沒有。(就算這樣,GitHub上還是出現(xiàn)了好幾個非官方的騙Star repo,也是心累)
不過好在發(fā)布會上,華為的PPT里面放了一張當前的1.0版本和接下來的2.0版本的架構圖,雖然非常粗略,但是還是可以管中窺豹,聊上一聊。當然,最主要的原因是,我做好了被打臉的準備 ^.^
由于本人并不在發(fā)布會現(xiàn)場,且暫時還沒有取得對應的照片的版權,所以麻煩讀者參照《32張圖看懂華為鴻蒙系統(tǒng)》一文的照片來理解本文的內(nèi)容。
應用場景
在這個專欄的第一篇文章:
為什么Google需要Fuchsia操作系統(tǒng)
中,我就道明了Google做Fuchsia操作系統(tǒng)的野心是非常大的。Google通過完全模塊化的設計,希望讓Fuchsia成為第一個AI原生(內(nèi)建深度學習、語音語義、人臉識別、圖像分類等人工智能算法),云原生(與各種云服務無縫集成),適用于手機、平板、筆記本電腦,以及路由器、智能音箱、機器人,甚至是Google的無人駕駛汽車的超級操作系統(tǒng)。
這段話里,其實從三個維度講解了Google的野心:
- 功能特性上:具備AI原生能力,內(nèi)建了邊緣和云端無縫化的人工智能能力;
- 生態(tài)上:具備云原生能力,與Google以及第三方提供的各種云服務無縫集成;
- 應用場景上:適用于個人移動設備、IoT設備甚至是無人駕駛汽車等不同運算能力和需求的場景。
而實現(xiàn)上述野心的手段是,將整個操作系統(tǒng)完全模塊化,變得可伸縮,可定制。
我們再回看華為在發(fā)布會上的PPT:
靈活適配全場景豐富終端形態(tài)
這是文章中的第四張PPT,從配圖中,我們可以看到它的適配范圍包括了
- GB級內(nèi)存的:桌面PC、筆記本電腦、手機
- MB級內(nèi)存的:智能手表、車機
- KB級內(nèi)存的:只能攝像頭、智能燈泡、智能門鎖
這個覆蓋的跨度與Fuchsia OS是非常相似的。在Fuchsia的內(nèi)核Zircon(之前被稱為Magenta)剛剛出來的時候,福布斯的報道就包括了這些內(nèi)容[1]。
分布式軟總線
華為在發(fā)布會上,花了非常大的篇幅介紹這個功能。從PPT中的內(nèi)容,大體推斷它包括了2個部分:
- 底層的“極簡協(xié)議”。華為本身就是搞通訊出身的,搞個新的協(xié)議自然不在話下。而這個協(xié)議是直接構建在網(wǎng)絡層之上的3層協(xié)議。雖然ppt上這個協(xié)議直接代替了原本協(xié)議棧中的4層。然而,實際上,大量現(xiàn)代的應用層協(xié)議(如HTTP協(xié)議)都是直接基于4層的TCP協(xié)議的,并不存在表示層和會話層協(xié)議。這個所謂的極簡協(xié)議其實也就是替代了TCP/IP或者UDP/IP這2層協(xié)議而已。設計上應當是盡量壓縮了協(xié)議包頭的尺寸,并設計成了無狀態(tài)非連接的形式。其根本目的在于降低通信的延遲,提高帶寬的利用率。面向的場景應該是包長非常小,但對實時性要求高的場合。
- 上層的應用框架。顧名思義,就是提供了一套SDK給到開發(fā)者,方便使用上述的極簡協(xié)議實現(xiàn)局域網(wǎng)內(nèi)的自發(fā)現(xiàn)、消息的單播、多播、廣播。
上文中,我特地強調(diào)了“局域網(wǎng)”是有原因的。因為現(xiàn)在大家使用的路由器的路由功能是基于3層的(IP層)。所以如果華為做的這個協(xié)議是一個非IP兼容的協(xié)議的話,那么它就無法被你的路由器正確路由,自然也就無法擴展到廣域網(wǎng)了。
所以,我猜測華為設計這個的目的,主要還是在于類似iOS Handoff或者AirDrop的功能。但提供了更好的實時性、可靠性和帶寬。
至于這一點,在Fuchsia中,恰恰選擇了一條完全不同的路徑。在Fuchsia中,全面擁抱了開放和標準的協(xié)議,擁抱了一些網(wǎng)絡方面的新技術。比如在做Fuchsia開發(fā)的時候,利用了IPv6的自組網(wǎng)特性,mDNS的自發(fā)現(xiàn)特性和HTTP/2.0作為通訊協(xié)議,實現(xiàn)遠程對客戶機的操控和管理。(題外話,在這一點上,Apple做了非常好的表率,在每一個OS大版本發(fā)布的時候,都會非常有意識、有節(jié)奏的將最新的技術整合進來,并且發(fā)揮出最大的功用)
調(diào)度引擎
再接下來,華為又花了很大的筆墨來講內(nèi)核的調(diào)度引擎。
關鍵內(nèi)容是在吐槽Android中用的Linux內(nèi)核采用的完全公平調(diào)度器[2](CFS)。坦白的說,我非常認同華為的吐槽,因為這個調(diào)度器是更加偏向于系統(tǒng)吞吐量,而非實時響應能力。所以,當系統(tǒng)負載較高,或是面臨突發(fā)負載時,非常容易導致UI卡頓。
而鴻蒙的內(nèi)核很可能是一個實時內(nèi)核,可以針對某些任務設定調(diào)度的deadline,保證在deadline前一定得到調(diào)度。這個做法通常應用在嵌入式領域比較多(比如ECU在控制你的發(fā)動機的時候,某些點火計算的任務是一定要在點火時間到來之前完成的)。
IPC性能
由于鴻蒙和Fuchsia都是微內(nèi)核的操作系統(tǒng),所以IPC(Inter-process Call)性能是內(nèi)核最最關鍵的指標之一。它直接決定了整個操作系統(tǒng)的性能水平,甚至可以直接將一個微內(nèi)核操作系統(tǒng)排除在實用性之外。在華為的PPT中,華為聲稱鴻蒙內(nèi)核的IPC性能是Fuchsia的
5倍。這是相當夸張的一個性能優(yōu)勢。至于華為是如何做到的,我是非常非常好奇的,期待華為開源鴻蒙OS(星星眼)。
架構圖
最后,說一下華為放出來的架構圖。其實除了內(nèi)核層之外的部分我一點都不關心。我們重點關注內(nèi)核層,會有很驚喜的發(fā)現(xiàn):
架構圖中,內(nèi)核層一共有3個內(nèi)核,分別是Linux內(nèi)核、鴻蒙微內(nèi)核、LiteOS內(nèi)核。我們知道,如果沒有虛擬化技術,這3個內(nèi)核是無法共存的,那么華為到底是怎么做到的呢?秘密藏在SoC的Block Diagram中:
讓我們一起看一下官宣的麒麟970的PPT(980的PPT為了放別的組件,把Sensor Processor隱藏了,但硬件上肯定是有的):
v2-f272f043d9e6b0301d75bace8f47e28e_720w.jpg (53.89 KB, 下載次數(shù): 0)
下載附件 保存到相冊
14 分鐘前 上傳
注意圖中的3個地方:
- 左上角的8-Core CPU
- 左下角的i7 Sensor Processor
- 右下角的Security Engine (inSE & TEE)
我們再看華為發(fā)布會中第14張圖片,標題是“微內(nèi)核技術用于可信執(zhí)行環(huán)境(TEE)”。再注意右側(cè)的那個框圖,可以看到鴻蒙的微內(nèi)核現(xiàn)在是跑在TEE內(nèi)的,而普通執(zhí)行環(huán)境跑的是Linux內(nèi)核。
提到的第三個內(nèi)核LiteOS是華為針對IoT領域推出的嵌入式操作系統(tǒng)[3]。
所以我認為,這次在鴻蒙1.0上,主CPU里面跑的還是Linux,鴻蒙微內(nèi)核只是運行在Security Engine的TEE環(huán)境中,而LiteOS則是跑在Sensor Processor(實際上就是一顆內(nèi)置的MCU核心)上,負責處理傳感器數(shù)據(jù)的嵌入式內(nèi)核。
結(jié)論
本文的結(jié)論僅限我根據(jù)華為當前公布出來的PPT猜測的個人觀點,很可能存在錯誤,等華為開源后,我會另外行文修正。
- 鴻蒙1.0中,鴻蒙微內(nèi)核僅運行在TEE中,并非整個操作系統(tǒng)的主要內(nèi)核;
- 操作系統(tǒng)的主要內(nèi)核仍然是Linux(應該就是Android魔改過的Linux內(nèi)核,但加上了華為的魔改,比如EROFS、“極簡協(xié)議”);
- LiteOS內(nèi)核本身就是幾乎所有華為手機上的Sensor Processor(客官可曾記得蘋果在A系列處理器中增加的M系列核心?)的嵌入式OS;
- 鴻蒙OS 1.0主體就是AOSP加上了華為自己的修改(比如EMUI的殼、方舟編譯器的運行時,GPU Turbo等);
- 你可以認為EMUI 10.0就是鴻蒙OS 1.0;
- 鴻蒙OS 2.0開始的發(fā)展方向應當是完全按照Fuchsia的軌跡來設計和執(zhí)行的,目測節(jié)奏上也會緊跟Fuchsia的步伐。
|
|