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