近日,華為在東莞舉行了一場盛大的發布會,會議開頭介紹了華為在消費者市場所取得的成績,說實話,看了還挺震撼的,華為確實是一家很厲害的商業公司。

後面就開始介紹鴻蒙 OS 了。

我研究過幾年的 Linux 內核,對操作系統的了解可能比一般人多些吧,這裡,我就根據我的所學來看看鴻蒙OS。

我整體的看法是:

華為是一家好公司,商業上確實也取得了很大的成績,技術能力數一數二,敢做操作系統,挑戰全新的操作系統生態,有野心,敢挑戰。

但這個發布會,感覺更像個吹水會。

讓我一個一個來說說吧。

一、宏內核和微內核

看過發布會的同學,對上面這個概念應該很熟悉了,會議上多次提到微內核,余總稱其為面向未來的內核。

其實宏內核、微內核都不是什麼新鮮的概念,在 Linux 還沒有問世之前,就已經存在這個概念了,最流行的PC操作系統 Windows 就是微內核的。

經典操作系統教材 《操作系統設計與實現》裡面的教學操作系統 Minix ,也是微內核。

宏內核和微內核之間各有優劣。

下面我們先來看看宏內核與微內核的定義以及各自的優缺點:

芯智訊補充1:宏內核與微內核定義

微內核定義:內核管理着所有的系統資源,在微內核中用戶服務和內核服務在不同的地址空間中實現。在應用程序和硬件的通信中,內核進程和內存管理的極小的服務,而客戶端程序和運行在用戶空間的服務通過消息的傳遞來建立通信,它們之間不會有直接的交互,這樣一來,微內核中的執行速度相對就比較慢了,這是微內核架構的一個缺點。

在內核架構中,用戶服務是獨立於內核服務的,因此任何用戶服務崩潰都不會影響到內核服務,這就加強了操作系統的健壯性,這是微內核的優勢所在。另一點,微內核的擴展性強,添加一個功能,只需要建立一個新的服務到用戶空間當中,而內核空間不需要任何的修改。因此,微內核可移植性強、安全並且易於擴展。

宏內核定義:宏內核同樣管理着用戶程序和硬件之間的系統資源,但是和微內核不一樣的是,在宏內核架構中,用戶服務和內核服務在同一空間中實現。具體一點,就是內核可以代表內核進程運行代碼,就是通常的內核進程;當用戶進程經過系統調用或者中斷進入到內核態時,內核也可以代表它運行代碼。這樣一來,宏內核需要管理的資源多於微內核,其大小就相對大一些了。

在宏內核架構當中,內核管理着CPU調度,內存管理,文件管理和系統調用等各模塊的的工作,由於用戶服務和內核服務被實現在同一空間中,這樣在執行速度上要比微內核快。然而,宏內核的劣勢也是顯而易見的,那就是當內核中的某個服務崩潰了,整個內核也會崩潰。另一點,想要在內核中添加新的功能就意味着內核中的各個模塊需要做相應的修改,因此其擴展性很弱。

來源:知乎@Vizxu https://zhuanlan.zhihu.com/p/53612117

芯智訊補充2:微內核與宏內核的優缺點

圖片來源:雲時之間

從理論上來看,微內核的設計思想更好一些,它將系統分為各個小的功能模塊,只把最基本的功能保留在內核,使得設計難度大大降低,系統的維護與修改也方便進行。但是微內核需要頻繁的在核心態和用戶態之間切換,性能較低。

而宏內核就是把很多東西都集成進了內核,例如linux內核,除了最基本的進程、線程管理、內存管理外,文件系統,驅動,網絡協議等等都在內核裡面。這樣很多資源都可以直接調用,所以效率比較高。但是這也使得其設計難度大大提升,並且修改與維護的代價也很高。

總結來說,宏內核的優勢是性能,劣勢是開發效率和開發難度。

微內核的優勢是開發效率和開發難度,劣勢是性能。

但發布會上似乎把優劣勢給搞反了。

宏內核最知名的代表是 Linux 內核,目前 Android 使用就是 Linux 內核。

微內核最知名的代表是 Windows , 雖然大家經常吐槽 Windows , 但微軟確實是很厲害的。

以我的理解,宏內核的開發成本和開發難度要大於微內核,一般的商業公司選擇微內核架構是可以理解的,Linux 之所以採用宏內核,是因為人家是純開源系統。

來一個直觀的對比,Linux 內核的開源開發者有上百萬,對比 Windows 內核的開發者,估計不到幾萬人。

就人力來說,商業公司採用宏內核的架構,有可能使整個項目陷入泥潭。

會議上一直在強調微內核,而且還搞反了兩者的優勢和劣勢,這個就有點不妥了。

二、鴻蒙的性能

基於上面的分析,如果鴻蒙最終是採用微內核架構,性能上要做到比宏內核更好是非常困難的。

宏內核,因為內核是一體的,一次文件讀取操作,基本就是函數的調用過程,速度是極快的。

微內核是模塊化的,內核,文件系統,磁盤驅動都隸屬不同的系統進程,要完成一次文件讀取,需要在各系統進程之間進行多次通信,開銷要遠大過直接的函數調用。

總的來說,一旦採用了微內核架構,就是選擇開發的便利性,而放棄性能,所以會議還不斷提性能好,也是比較忽悠了。

不過,從技術的角度看,商業公司選擇微內核是正確的,微軟就是最好的證明。

硬件發展速度很快,軟件性能問題,最終都會被硬件速度的提升給弱化,提升開發效率,降低軟件複雜度才是關鍵,微內核的優勢也在於此。

芯智訊補充3:在鴻蒙OS之前,市場上其實已經有一款幾乎符合鴻蒙所有特性,並且比鴻蒙做的更好的手機系統,那就是基於QNX的黑莓OS。QNX系統的核心特性包括:分布式架構、微內核、極高的安全與可靠性、硬實時系統、輕量級。

QNX系統在八十年代設計之初就是分布式架構,完全基於分布式消息傳遞機制,可以無縫的進行大規模多機運行。此外,由於其內核僅提供最基本的進程通信等服務,因此體積可以剪裁得非常小。經過幾十年的開發與驗證,其本身也擁有幾乎是最高級別的安全性與可靠性。

正因為如此,QNX系統不僅此前被應用在黑莓手機上,更被廣泛的應用在包括核電廠,航天飛機,醫療機器人,激光眼科手術器械,汽車ADAS等對操作系統可靠性與實時性要求極高的領域。目前在汽車領域,QNX依然是霸主級的存在。

(該部分資料來源:知乎@天明

https://www.zhihu.com/question/339567108/answer/781775403)

補充一下,黑莓OS的失敗並不是其系統的失敗,而是其過於封閉的生態策略上的失敗,雖然後期開始對於安卓應用進行兼容,但是為時已晚。

三、離開用戶體驗討論安全性,有吹水之嫌

技術上,要把一個系統的安全性做到極致,是可以的,但跟安全性相對的是用戶體驗。

余總在會議上用了房間和鑰匙來比喻。

安卓系統是一個大房間,一個大鑰匙,壞人拿到了大鑰匙,就是可以拿走房間內所有的東西。

鴻蒙內核因為採用了微內核架構,所以相當於每個模塊都是一個房間,有多個房間就可以有多個鑰匙,所以安全性更高。

從安全性角度看,確實如此。

但用戶原來只要保存一個鑰匙(相當於密碼),現在卻要保存多個鑰匙(相當於多個密碼),安全性是增加了,但用戶體驗真的能夠保證嗎?

可能上面的舉例不是特別恰當,但離開用戶體驗,只是一味強調安全性,也是有吹水之嫌了。

四、目前的鴻蒙OS還不是微內核,而是多內核架構

會議花了很長時間,從性能,安全性等方面來說明了微內核的好,然而最後卻只給出了這麼一個結果:目前鴻蒙OS採用的內核還是:Linux 內核、鴻蒙微內核 、LiteOS內核並列的多內核架構,純微內核是未來的規劃。

那是什麼意思?意思就是這個東西只是一個規劃,一個設想。

一般民眾聽完會覺得,可能過幾年,華為的純微內核的鴻蒙OS就問世了。

作為對操作系統內核有點理解的人,我持相當保留的態度。

Linux 內核從第一個版本到現在經歷了30年的時間,微軟也創立了 40 年。

從零開始做一個完全基於自主設計的內核的商用化系統的難度,不亞於最複雜芯片的研製,沒有十年以上的研發過程,估計難以問世。

假設十年後,華為能夠研發出來,但現在就拿一個十年後的東西來說,也是有點忽悠了。

芯智訊補充4:在發布會後,網上有網友爆料,智慧屏的鴻蒙OS中出現了ABD調試授權模式。ADB工具即Android Debug Bridge tools。它就是一個命令行窗口,用於通過電腦端與模擬器或者真實設備交互。因此,外界也出現了很多聲音質疑稱,目前在榮耀智慧屏上商用的鴻蒙OS依然還是基於安卓的深度定製。不過也有網友表示,目前鴻蒙OS本身就有Linux內核,而安卓底層也是基於Linux內核,因此出現ADB工具也並不意外,這麼做應該是為了兼容安卓應用。

芯智訊補充5:眾所周知目前的谷歌安卓系統僅僅是基於一個Linux內核,很多其他的系統也是有一個內核,但是根據華為展示的鴻蒙OS的PTT來看,目前的鴻蒙OS似乎是基於Linux 內核、鴻蒙微內核 、LiteOS內核並列的多內核架構,這是如何實現的?

知乎上有業內人士認為,一個操作系統,三個內核?Android的應用、虛擬機,跑在linux內核上,某些IoT的應用跑在Lite-OS內核下,已遷移到鴻蒙內核的應用,跑在鴻蒙內核、外核(一個內核外的基礎服務應用群)下,如果這一過程是在一部設備上實時動態變化的,這似乎不太可能。因為,一個終端同一時間,只能跑一個OS內核!

那麼可能的形式是:在不同的平台,運行不同內核。各平台間通過統一的,華為所謂的軟總線實現分布式計算體驗。當足夠多App遷移到鴻蒙內核架構下運行時,Linux內核和Lite-OS內核就會完成它們的使命,從鴻蒙OS的體系中退出。

另一種可能是:鴻蒙的微內核作為基礎內核,運行在最底層,把Linux和Lite-os稍作修改,作為一個服務運行在鴻蒙微內核之上。但是,這種設計,linux和Lite-os基本上就是虛擬機了,運行效率相比於原生的Linux和Lite-os,會大打折扣,能接近原生就不錯了,性能超越Android 60%云云,那是根本不可能的,這種結構的實際運行效率,跟余承東發布會描繪的嚴重不符,所以基本應該不是這種形式。

(來源:知乎@小強

https://www.zhihu.com/question/339586623/answer/784001572)

個人看法

這個發布會是比較忽悠的,至少在鴻蒙OS這塊,混淆了概念,畫了個大餅。

不過我還是比較認可鴻蒙 OS 最後的設計,這種設計符合客觀技術規律,也符合商業利益。

技術是客觀的,跟愛國,跟政治都沒有關係,如果非要在技術裡面摻雜政治,摻雜愛國主義情懷,最後可能什麼都做不成。

其實我覺得就算一直使用 Linux 內核都沒有問題。

Linux 內核的創始人是芬蘭人,不是美國人,Linux 也不是隸屬於美國的。Linux 裡面上百萬的開發者是來自全球的,裡面也有很多的中國人,阿里,華為,騰訊等公司在裡面也貢獻了不少代碼,這是一個面向世界的內核,是人類團力協作的智慧產物,我覺得完全可以用。

從商業的角度講,直接基於 Linux 內核,構建上層系統,構建商業生態也是合理且高效的。

Android 沒有自己去造內核,而是基於 Linux 內核。蘋果系統的內核也是基於已有的 Unix 系統,所以就算華為還是基於 Linux 內核來做,我覺得也完全合理。

不必非要給華為強加一個愛國的名義,非要自己搞一個全新的內核出來。

自己從頭開始造內核,耗費人力,財力,可能也不符合商業利益,最後更可能胎死腹中。(芯智訊註:當然,如果華為能夠有當初做海思芯片那樣的決心和持續投入的毅力,鴻蒙內核未必不能實現發布會上的願景。)

我覺得鴻蒙OS不一定非要如發布會所說的那麼牛逼,只要最終真能夠比肩Android , 甚至是替換掉Android, 從技術專業的角度看,已經很牛逼了。

這對中國企業來說,也是一個突破和飛越,是一件值得驕傲和自豪的事情。不需要一出世就領先人家十幾年,那不現實,是不是?

最後還是要說一句,華為是好公司,華為的技術確實也很牛。