什麼叫做微內核?與Android系統有什麼區別?

從事嵌入式開發多年,要講清楚這個事情真需要一定開發經驗特別是關於linux上面的,首先微內核是相對於強內核而言,linux屬於典型的強內核架構,從第一版本開始就是這個樣子,首先linux設計者對於設計成強內核有自己的理由,更多是一些個性化的理由,當然也提出自己的一些意見,必須是祖師爺大家還是要尊重老人家的意見,概括起來大致有幾個方面。

1.強內核機構看起來更加清晰明了,結構層次清晰簡潔。

2.很重要的原因,因為linux程式碼是開源的,更加具備理想情懷,因為是開源的架構大家有的是時間把這個事情做的更加完美細緻,如果這個事情放在一個商業化企業去做,可能架構就要跟著調整了,畢竟任何企業都要有時間點概念,這就是開源社區和商業化組織的最大區別。

3.linux

的強內核也就是但單個內核把裡面的功能結構劃分的十分清晰明確反而像極了微內核,linux結構層面簡單明了,非常容易學習。

4.祖師爺認為單純為了增加維護性而去犧牲效率是不值得,所說的效率就是指的是進程之間的通訊開銷。

從以上四點就可以得出結論,Linux在設計上還是展示出很多的與眾不同之處,但從Android系統性能上講這種單純的強內核架構已經顯示出來弊端了,如同餘大嘴說到的現在Android的程式碼差不多 有一億行,但真正在運行只有8%的概率,所以在效率上有大打折扣,可以講隨著硬體以及軟體發展趨勢,微內核未來成為一種大的趨勢,現在微內核做的比較好的屬於美國黑莓公司的QNX系統,由於是收費系統在市面上推廣的力度不是很大,主要用在進口車的裡面的娛樂系統上面。

從技術角度解析強內核和微內核的區別

在功能簡單單一的場景下強內核有著自己獨特的優勢。因為功能簡單模組就比較少,程式碼量也相對少了許多,在這種情況下採用強內核容易維護,而且程式碼實現也比較簡單。微內核主要針對運行場景非常複雜,功能模組極其複雜的場景而設計的

要了解微內核首先要明白用戶空間和內核空間的差異,在強內核中幾乎涉及到設備驅動的程式碼都要運行在內核空間,用戶在編寫程式碼的時候就要創建一個進程,用戶空間的程式碼通過記憶體映射的方式在訪問內核空間的設備,在設備功能比較少的時候非常具有優勢,但在多種設備融合在一起的時候這種設計弊端就出來了。微內核架構上是系統級功能非常簡單就是提供進程之間的通訊基礎,其餘複雜的功能散落在各個服務裡面,如果要調用別的功能模組通過進程之間的通訊來完成,能夠支援多個服務在一個規則裡面運行,所以講在微內核架構裡面融入Android系統還是一件非常容易的事情,因為就是開設一個獨立的服務在裡面,所以華為公司敢拍著腦袋說鴻蒙系統兼容Android不是多大的問題,只不過需要成熟的生態系統來支撐。

微內核架構就可以根據功能的差異劃分成多種服務。如果是通訊比較頻繁的可以單獨放在一個服務裡面,在設計上會靈活許多,華為的鴻蒙系統在理論上性能要強於Android主要架構原理在於此,同時優化了進程之間通訊的機制,非常符合萬物互聯的架構,甚至講連接不同的服務就如同連接不同的設備,完全在一個系統概念下通訊,特別是針對5G成熟後應用的連接,雖然看起來鴻蒙是被迫的產物,但現在看起來更像是未來生態的一個標準。

有些作業系統採用微內核和強內核結合方式,mach架構就是這種典型的代表,所以在蘋果手機的流暢度相比Android還是要流暢一些,這裡面有架構方面的因素,隨著後續手機功能的持續增加微內核已經是一種趨勢了,但微內核是不是真的無懈可擊了,答案是否定的。

微內核和強內核優缺點

微內核由於在服務之間通訊增加了傳輸的成本,如果數據交互的數據量非常大效率必然受到影響,但由於服務之間互相獨立,一個模組出現問題了不會影響到別的進程。強內核在工作過程中同時載入的數據量太大,影響了整體性能,整體來講兩種體系架構各有優劣,不單純的講哪種方式最合適。

選擇什麼什麼樣子的架構主要和具體使用場景息息相關,合適的就是最好的,希望能幫到你。

Tags: