華為在此前的華為開發(fā)者大會上正式宣布了鴻蒙操作系統(tǒng),該系統(tǒng)其中一個亮點是 —— 微內(nèi)核。華為聲稱,微內(nèi)核的啟用,使其速度大大提升,并且在安全性上產(chǎn)生變革性突破,微內(nèi)核打破了宏內(nèi)核下root即可獲取用戶所有權(quán)限的做法,在安全性上大大提升。
什么是微內(nèi)核呢?
微內(nèi)核結(jié)構(gòu)由一個非常簡單的硬件抽象層和一組比較關(guān)鍵的原語或系統(tǒng)調(diào)用組成;這些原語,僅僅包括了建立一個系統(tǒng)必需的幾個部分;如線程管理,地址空間和進(jìn)程間通信等。
微核的目標(biāo)是將系統(tǒng)服務(wù)的實現(xiàn)和系統(tǒng)的基本操作規(guī)則分離開來。例如,進(jìn)程的輸入/輸出鎖定服務(wù)可以由運行在微核之外的一個服務(wù)組件來提供。這些非常模塊化的用戶態(tài)服務(wù)器用于完成操作系統(tǒng)中比較高級的操作,這樣的設(shè)計使內(nèi)核中最內(nèi)核的部分的設(shè)計更簡單。一個服務(wù)組件的失效并不會導(dǎo)致整個系統(tǒng)的崩潰,內(nèi)核需要做的,僅僅是重新啟動這個組件,而不必影響其它的部分
微內(nèi)核將許多OS服務(wù)放入分離的進(jìn)程,如文件系統(tǒng),設(shè)備驅(qū)動程序,而進(jìn)程通過消息傳遞調(diào)用OS服務(wù)。微內(nèi)核結(jié)構(gòu)必然是多線程的,第一代微內(nèi)核,在內(nèi)核提供了較多的服務(wù),因此被稱為‘胖微內(nèi)核’,它的典型代表是MACH,它既是GNU HURD也是APPLE SERVER OS 的內(nèi)核,可以說,蒸蒸日上。第二代微內(nèi)核只提供最基本的OS服務(wù),典型的OS是QNX,QNX在理論界很有名,被認(rèn)為是一種先進(jìn)的OS.
采用微內(nèi)核設(shè)計的操作系統(tǒng)
微內(nèi)核并非一個新的概念,它已經(jīng)存在很長的歷史,下列的操作系統(tǒng)都是基于微內(nèi)核結(jié)構(gòu)設(shè)計的:
AⅨ
BeOS
L4微內(nèi)核系列
Mach,用于GNU Hurd和Mac OS X
Minix
MorphOS
QNX
RadiOS
VSTa
RT-Thread
知乎上有人對微內(nèi)核下了一個結(jié)論:
Micro-kernel 已經(jīng)失敗。在商業(yè)級操作系統(tǒng)中(包括可以用于 mission critical 的 open source 操作系統(tǒng)),除了 L4 還在苦苦留有少量份額,沒有任何 micro-kernel 的市場。
第一代 micro-kernel 是以一個錯誤的方式解決了一個錯誤的問題。而第二代 micro-kernel 不過是以正確的方式解決了錯誤的問題。
Linux 究竟是單內(nèi)核的還是微內(nèi)核的
Linux 是一個單內(nèi)核結(jié)構(gòu),同時又吸收了微內(nèi)核的優(yōu)點:模塊化設(shè)計,支持動態(tài)裝載內(nèi)核模塊。Linux 還避免了微內(nèi)核設(shè)計上的缺陷,讓一切都運行在內(nèi)核態(tài),直接調(diào)用函數(shù),無需消息傳遞。
早在 1992 年,Linus 曾經(jīng)與 Tanenbaum 進(jìn)行一場關(guān)于操作系統(tǒng)內(nèi)核選擇的著名爭論。Tanenbaum 認(rèn)為,以微內(nèi)核架構(gòu)設(shè)計的操作系統(tǒng),在理論上,比宏內(nèi)核架構(gòu)更加優(yōu)越,主張Linux應(yīng)該以微內(nèi)核架構(gòu)來進(jìn)行重新設(shè)計。但是 Linus 以開發(fā)實務(wù)上的觀點展開反擊,陳述 Linux 選擇宏內(nèi)核架構(gòu)進(jìn)行開發(fā)的理由,并比較Minix與Linux的性能差異。你可以通過維基百科了解此次爭論的完整細(xì)節(jié)。
Tanenbaum —— 著名的技術(shù)作家、教育家和研究者,IEEE高級會員、ACM高級會員、荷蘭皇家藝術(shù)和科學(xué)院院士、1994年ACM Karl V. Karlstrom杰出教育獎、1997年ACM計算機科學(xué)教育杰出貢獻(xiàn)獎、2002年Texty卓越教材獎、第10屆ACM操作系統(tǒng)原理研討會杰出論文獎、被列入“Who‘s Who in the World”人物目錄。
下圖是宏內(nèi)核(左)和微內(nèi)核(右)兩種結(jié)構(gòu)的簡單架構(gòu)圖:
當(dāng)然對最終用戶而言,我們并不在意采用何種方案。從現(xiàn)實情況來看,微內(nèi)核似乎還有很長的路要走。
華為鴻蒙OS就快要應(yīng)用到終端了,我們非常期待鴻蒙系統(tǒng)早日能給最終用戶提供服務(wù)。