一文讀懂微內核

2019年8月9日華為 餘承東 發佈HarmonyOS 1.0,HarmonyOS的發佈將一個計算機領域內非常專業的詞帶到瞭廣大公眾的視線內,這就是微內核

事實上,微內核並不是一個新概念。早在1969年,UNIX系統開始設計的時候,類似微內核架構的操作系統就已經出現。1969年,丹麥計算機科學傢Per Brinch Hansen開發的RC 4000 Multiprogramming System操作系統,是歷史上第一次將操作系統組件分離為各個相互交互的組件,將內核簡化為僅用於通信和支持系統,並使用管道共享內存作為其進程間通信的基礎。如今回看RC 4000 Multiprogramming System雖然其本身並不是很成功,但激發瞭微內核概念。

繼續HarmonyOS的話題,看瞭HarmonyOS 1.0發佈會回放後,我有一個疑問:什麼是宏內核,什麼又是微內核,微內核相比於宏內核真的有如此大的優勢嗎?

華為HarmonyOS 1.0發佈會直播回放:http://www.bilibili.com/video/av62950256/

一、操作系統

瞭解微內核宏內核之前,首先瞭解一下操作系統

操作系統(Operating System)是現代計算平臺的基礎與核心支撐系統,負責管理硬件資源(包括輸入輸出設備的初始化、分配與回收)、控制程序運行改善人機交互以及為上層應用軟件提供運行環境等。操作系統作為計算機之“魂”,是釋放硬件能力、構建應用生態的基礎

從應用的角度看,操作系統的作用:一是服務於應用,二是管理應用

  • 一方面操作系統提供各種不同層次、不同功能的接口,以滿足上層應用的需求。
  • 另一方面,操作系統負責對應用生命周期進行管理,包括初始化、啟動、調度、切換、銷毀等。

從硬件的角度看,操作系統主要包含兩類功能:

  • 一方面操作系統將不同功能的硬件資源納入統一的管理。例如,內存管理,操作系統識別電腦中存在的多種不連續的、有限的物理內存區域,再采用某種內存管理分配機制進行分配與管理。
  • 另一方面操作系統負責將不同功能硬件資源進行抽象,將有限的、離散的資源抽象為無限的、連續的資源,並將硬件資源通過接口提供給上層應用調用,從而使上層應用無需關心硬件的具體細節。例如,上層應用開發中,開發者無需關心物理內存硬件的容量、型號信息,而是面向一個近似無限的、統一的虛擬地址空間。

操作系統簡要結構

通常而言,狹義的操作系統指的是操作系統內核加上一個Shell(即UNIX/Linux等操作系統中的命令行頁面)。隨著硬件種類和應用需求越來越豐富,大量共性功能沉淀到操作系統中,操作系統的內涵和外延不斷擴大,因此,廣義的操作系統又可以進一步分為操作系統內核與操作系統框架。操作系統內核負責對硬件資源的管理與抽象,為操作系統框架提供基礎的系統服務(操作系統內核又分為宏內核、微內核等);操作系統框架則基於操作系統內核提供的服務為不同的應用提供API接口與運行環境。

二、宏內核&微內核

現在操作系統大多采用宏內核架構(如UNIX、Linux等),操作系統將一些基本的、公共的、與硬件緊密相關的 (如中斷處理、內存管理、文件系統、設備驅動等)、運行頻率較高的功能(如進程調度、時鐘管理等)以及關鍵性的數據結構獨立出來,使之常駐內存,並對其進行保護。內核中采用模塊化設計組織各個功能,所有模塊運行於內核空間,模塊間通信直接調用模塊間提供的接口函數實現。

ea570133f50f0c9762e3a93a56f485a7宏內核基本架構

宏內核可以理解為是個很大的進程,其內部又能夠被分為若幹功能模塊(或者是若幹層)。宏內核在運行的時,為一個單獨的二進制大映象,模塊間的通訊是通過直接調用其他模塊中的函數實現的,而非消息傳遞。

宏內核中許多的功能模塊都在同一個內核空間上運行,伴隨著操作系統的發展,內核模塊的復雜度越來越高,操作系統在可靠性安全性方面慢慢出現瞭一些問題,一個很小的bug都會使整個系統崩潰。為解決宏內核存在的問題,許多研發人員嘗試對宏內核架構進行解耦,將部分非核心功能(如文件系統、設備驅動等)從內核中拆分出來,作為一個獨立的服務運行於單獨的進程中,並為其提供進程間通信的能力(IPC Inter Process Communication),內核中隻保留最核心的功能(如內存管理、進程調度等),這種架構被稱為微內核架構。在微內核下服務與服務互相隔離,單個服務即使出現故障或受到安全攻擊,也不會導致整個操作系統的崩潰或被攻破,從而有效提供瞭操作系統的可靠性與安全性。

微內核基本架構

Minix

有興趣詳細研究微內核實現與原理的同學,可以研究一下MinixMinix第一個版本於1987年發佈,是荷蘭計算機科學傢Andrew S. Tanenbaum為瞭教學而創作,如今為Andrew S. Tanenbaum教授所著《操作系統:設計與實現》的示例代碼。Minix啟發瞭Linux內核的創作。1990年,還在上大學的Linus TorvaldsMinix得到靈感,出於對操作系統的興趣,於1991年發佈瞭Linux。

Minix目前有三個主要的版本:

  • Minix1 http://github.com/gdevic/minix1 Minix1是《操作系統:設計與實現》教材的演示代碼,側重於教學和學習(年代久遠,很難編譯安裝)。
  • Minix 2.0.4http://download.minix3.org/previous-versions/Intel-2.0.4/Minix 2.0.4側重於自學,鏈接中有詳細的安裝教程。
  • Minix 3.2.1 http://download.minix3.org/iso/minix_R3.2.1-972156d.iso.bz2 Minix 3.2.1是個實用版本,有iso映像可供下載,安裝方便。

三、宏內核VS微內核

自宏內核與微內核這兩種架構出現伊始,人們就兩者的優劣與特點展開瞭深入的討論。當前隨著物聯網時代的到來,使微內核架構的操作系統架構再次受到廣泛關註。

  • 彈性擴展能力:對於一個龐大的宏內核來說,很難僅僅通過簡單的剪裁與擴展,使之滿足支持資源訴求從KB到TB級別的場景;而對於微內核,內核空間隻包含核心功能,天然具備模塊化解耦與彈性部署的能力。
  • 功能安全:由於宏內核在故障隔離方面存在的缺陷,其安全與穩定性方面很難與微內核媲美。
  • 進程間通信:微內核將非核心功能以單獨進程的方式運行於用戶態,不同系統功能的相互調用需要通過進程間通信實現(IPC Inter Process Communication)。相比於宏內核內核空間中模塊間通信采用函數,微內核采用進程間通信,通信效率較低。

當前智能終端呈現多樣化的發展趨勢,面對物聯網時代的到來,微內核天生具備的模塊化解耦、彈性部署的能力以及安全穩定的特性,非常符合物聯網的發展,但進程間通信(IPC Inter Process Communication)的性能無疑成為微內核的軟肋

微內核雖然存在IPC性能軟肋,但IPC性能並非不可提升。德國計算機科學傢Jochen Liedtke(L3微內核與L4微內核系列的創造者)曾表示,高性能IPC的設計與實現必然是與體系結構相關的,過度的抽象將極大影響IPC的性能,而利用體系結構相關的狀態進行優化則可將IPC性能提升到極致。2019年華為HarmonyOS發佈會中,餘承東透露華為在微內核IPC優化方面的成果,采用微內核架構的HarmonyOS在IPC方面性能可以達到同樣采用微內核的Fuchsia操作系統的5倍。相信未來廣大技術研發人員不斷對IPC性能進行優化,微內核IPC的性能會有大的提升。

參考

維基百科 Regnecentralen:http://en.wikipedia.org/wiki/Regnecentralen

維基百科 RC_4000_multiprogramming_system:http://en.wikipedia.org/wiki/RC_4000_multiprogramming_system

維基百科 微內核:http://zh.wikipedia.org/wiki/%E5%BE%AE%E5%85%A7%E6%A0%B8

維基百科 Mach:http://zh.wikipedia.org/wiki/Mach

現代操作系統:原理與實現http://item.jd.com/12731379.html

操作系統的發展:http://www.feng.com/post/6209622

有關微內核:http://mp.weixin.qq.com/s/MLCR7qqGFWyyP0KcZqW3Kw

========== THE END ==========

文章首發於公眾號”CODING技術小館“,如果文章對您有幫助,歡迎關註我的公眾號。

发表回复

相关推荐

中国未解之谜大全,惨遭中国封杀的47神秘大事 件

在中国历史长河中,发生了太多太多至今仍然无解的神秘事情,而发生的这些神秘事件当中,可以说每一件都是十分的离奇诡异,而 ...

· 28秒前

新手必看丨参考文献正确的标注格式

写完了令人头疼的论文,还有令人抓狂的文献格式。一不小心,参考文献的引用就并入查重的行列,占用查重率,那是你忽略了这些 ...

· 35秒前

他用摄影反抗纳粹,即使成为头号通缉犯

约翰·哈特费尔德(John Heartfield),本名Helmut Herzfeld,1891年生于德国柏林。8岁时被父母遗弃(同时遭遗弃的还有他的三 ...

· 3分钟前

高溫鎳鉻合金Inconel718管材 N07718無縫管 2.4668毛細管

鎳基高溫合金哈氏合金系列材料生產供應商廠傢-上海閩鋼實業Inconel 718 沉淀強化鎳基高溫合金管材 Inconel 718價格,Inconel ...

· 3分钟前

《慶餘年》深度解析——大量劇透(葉輕眉前傳)

各位小夥伴,一年不見,大傢想我瞭嗎?這一年發生很多事情,老婆生瞭寶寶、自己辭職找工作、換瞭個城市、租房、開店。。。事...

· 3分钟前