什麼是微內核,什麼是宏內核?這兩者之間有何區別?

我來回答

熱心網友回答 (5)

  • 2414176310403779

    2019-08-10 07:56

    操作系統內核的幾個重要的特點:

    內核是操作系統的核心部分,它管理著系統的各種資源

    內核可以看成連接應用程序和硬體的一座橋樑,是直接運行在硬體上的最基礎的軟體實體

    在一些簡單的硬體設備上可以沒有內核或操作系統而直接運行程序,比方單片機等。這些設備通常只是用於特定的場合,也通常功能比較單一。而對於一般計算機來說操作系統是必不可少的。對不同的操作系統,其內核實現也是有所區別的。

    目前從內核架構來劃分,可分為微內核(Micro Kernel)和宏內核(Monolithic Kernel),「宏內核」這個翻譯其實不是很好,翻譯成「單內核」事實上更好一點。

    對於微內核,用戶服務和內核服務分別運行在不同的地址空間中;對於宏內核不管是用戶服務還是內核服務事實上都是內核在統一管理,它們是運行在同一地址空間中的。

    我們需要好好理解第5點,也就是用戶服務和內核服務運行的地址空間的問題。大家都知道Linux採用的是宏內核,但是它也區分內核空間和用戶空間,那不是有歧義了嗎?

    對於Linux來說,不管是應用還是內核都是由內存管理單元來做統一的內存管理的,用戶空間的程序確實不能訪問內核空間,但是對於內核來說,3GB-4GB的線性地址空間對整個內核都是共用的,同時內核中的VFS、System Call等模塊被劃分到內核中,它們之間的地址空間是相同的,這裡的用戶服務按照我的理解就是這幾個內核模塊所需要的報備。

    微內核定義:

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

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

    宏內核定義:

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

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

    內存管理的區別:

    宏內核在內核空間就實現了系統所有內存管理所需的一切業務,包括內存分配策略、虛擬內存管理分頁算法等。

    對於微內核的內存管理實現,有一個發展過程。在第一代的微內核架構中,內核代理了用戶空間的內存管理,控制著內存訪問的權限。

    內核中的某個服務負責管理缺頁異常並保存新分配的頁,只要有缺頁異常發生,請求就經過內核通知頁管理器。頁管理器必須進入特權模式下來獲取內存的訪問,然後回到用戶模式下。然後發送一個返回結果來觸發進程,當然這個過程也是需要經過內核的。處理缺頁異常或者保存新分配頁的整個過程是繁複而耗時的。

    為了彌補性能上的損失,之後的微內核構架在內存管理上作了相應的改變。每個進程有3個內存管理原語(Primitves):map、grant和flush。如果進程想要共享它的內存頁那麼它的可以通過map來映射內存頁給其它進程。當進程通過grant來讓渡它的內存頁給其它進程之後,該進程就喪失了這些內存頁的訪問權,直到讓渡進程不再刷新它們。如此一來,整個系統運行過程就成了這樣:在系統啟動時,內核將所有內存保存到一個叫做基本的系統進程 (basic system process) 當中,當然這個所謂有基本進程是運行在用戶空間中的,如果其它進程需要內存,就是再需要從內核中獲取,它可以直接向這個基本的系統進程索取。

    其它模塊的區別:

    微內核和宏內核在設計上還存在一些其它的區別,比方IO管理方面,宏內核的設備驅動直接在內核中實現,硬體中斷也直接在內核中處理;但是在微內核中,內核是不直接處理IO中斷管理的,來自硬體的請求將被重定向到用戶服務中去,比方內核捕獲了一個中斷,那麼內核發送給設備驅動服務就完事了,設備驅動服務會去處理這個中斷。

    總結:

    微內核效率比宏內核慢,但在安全性、可靠性方面要比宏內核好,在擴展性方面微內核也有優勢。

    從內核構架發展趨勢來說,將來或許會有比Linux更為強勁的基於微內核架構的OS出現,讓我們拭目以待吧!

  • 4067818060645491

    2019-08-10 18:31

    內核:

    https://i1.ask543.net/uploads/fe/ac/1/2b29c00005995c31e453e.jpg

    內核是操作系統的核心,是操作系統工作的基礎,分為單內核、雙內核、微內核。內核負責管理系統的進程、內存、設備驅動程序、文件和網絡系統,決定著系統的性能和穩定性,是為眾多程序提供對硬體的安全訪問的一部分軟體。

    https://i1.ask543.net/uploads/f0/70/0/2b29b000058cb01347626.jpg

    舉個例子:當我們要播放一個視頻的時候,視頻APP要調用到設備的驅動程序,比如說聲卡、顯卡,而設備驅動程序又是由內核進行管理的,APP必須獲得內核的訪問權限。

    https://i1.ask543.net/uploads/fa/70/4/2b29f000057980bb739ae.jpg

    更通俗地講,內核就相當於一個公司架構裡面的管理層。

    https://i1.ask543.net/uploads/5d/bf/0/2b28e0000582eb3dc4d52.jpg

    微內核:

    https://i1.ask543.net/uploads/b9/1f/9/2b29a00005904b9637c36.jpg

    微內核是內核的一種精簡形式。通常系統服務層是和內核集成在一起的,而微內核將系統服務層被分離出來,變成可以根據需求加入的選件,這樣就可以提供更好的可擴展性和更加有效的應用環境。

    昨天華為開發者大會宣布的鴻蒙操作系統用的就是微內核,這也是鴻蒙系統的亮點之一。

    宏內核:

    宏內核又稱為單內核,它的架構特性是整個核心程序都是以核心空間的身份及監管者模式來運行。宏內核被視作為運行在單一地址空間(核心空間)的單一的進程,核心提供的所有服務,都以特權模式進行。

    目前有的宏內核可以將其運作從整體性運作拆分成幾個服務模塊,並且讓各模塊各自運作,但其操作系統的代碼依然是高度緊密的,很難修改成其他類型的操作系統架構。

    現在我們常用的操作系統多為宏內核,比如安卓系統、IOS。

    微內核和宏內核的區別:

    宏內核和微內核的區別可以形象地理解為中央集權制和分封制。

    宏內核簡單地說就是把很多的東西都集成進內核里,各種進程和內核高度緊密,它的優點是效率高,缺點是穩定性差,如果開發進程出現一個bug經常會導致整個操作系統掛掉。

    微內核的內核只能進行最基本的調度、內存管理,它的優點是非常穩定,做驅動開發時,發現錯誤,只需要相應地修正再重啟進程就行了,但缺點是效率差。它的一大特點是可以進行模塊化設計。

  • 車和數碼控

    2019-08-11 22:04

    華為最新發布的鴻蒙系統採用了微內核架構,而安卓系統採用了宏內核。採用微內核架構的還有windows系統內核、塞班系統、google正在研發的Fuchsia系統(用於替代android)。

    https://i1.ask543.net/uploads/f6/65/f/2b2a10000603d88d963e5.jpg

        宏內核

    https://i1.ask543.net/uploads/47/fe/a/2b29a00006183b69825a3.jpg

        宏內核是指內核包含了操作系統絕大部分功能,比如網絡協議、文件系統、硬體驅動等,這些模塊具有很高的權限,各個模塊系統開發難度相對較低。

    https://i1.ask543.net/uploads/02/57/2/2b29700006138ed1d718b.jpg

        隨著集成的模塊越來越堵,內核不斷增加,因此會出現類似安卓系統碎片化的問題,如果一個模塊出現問題,整個系統就會崩潰,穩定性比較差。因此很多安卓手機,隔段時間就需要重啟。

        微內核

        鴻蒙系統採用了微內核架構,內核部分僅僅包括了操作系統基本的任務管理、內存分配回收等幾個必要的模塊,其他模塊外掛在為微內核周邊,不具有最高權限,作為單獨的進程存在,而且互不打擾,穩定性比較好。

        未來LoT時代,微內核是發展趨勢,鴻蒙操作系統、google正在研發的Funchsia系統均採用了微內核,微內核是跨平台、分布式硬體的關鍵技術,是適應未來技術發展的必然趨勢。

        總結

        隨著5G網絡的普及,萬物互聯以及LoT時代的到來,未來需要分布式架構支持多終端統一系統的運行,而多終端操作系統穩定性非常重要,因此微內核是未來「萬物互聯」時代發展趨勢。

    如果覺得對你有幫助,可以多多點讚哦,也可以隨手點個關注哦,謝謝。

  • dfl_689

    2019-08-11 07:54

    期盼著,期盼著,鴻蒙系統終於來了。

    它是一款全新的基於微內核的面向全場景的分布式操作系統,能夠滿足全場景流暢體驗、架構級可信安全、跨終端無縫協同及一次開發多終端部署的這四大特點要求。

    未來萬物互聯時代接入物聯網的設備形式非常多,包括PC、平板、穿戴設備、VR以及智能電視、智能音響、智能冰箱等智能家電以及汽車等。鴻蒙系統是分布式架構首次用於終端操作系統,能夠跨終端無縫協同,如智能手錶上沒有攝像頭,可以用手機上的攝像頭。

    此外,與安卓及蘋果操作系統基於宏內核技術不同,鴻蒙使用微內核技術。宏內核技術是指除了最基本的進程調度、內存管理等外,文件驅動、網絡協議等其他許多功能都包括在裡面。其優點是開發較容易,畢竟操作系統的絕大部分功能就在裡面;缺點是穩定性差,只要其中一個功能模塊出現問題就會導致整個系統崩潰。微內核技術則相反,除了進程調度、內存管理等基本功能外,其他模塊都不具有最高權限,即便一個模塊出錯也不會造成系統崩潰,系統穩定性高。宏內核技術就像有人用多米諾骨牌組成一幅精美的圖畫,有一張牌出錯,整幅畫就完了。而微內核技術是把這幅畫分成若干部分,即使一部分出錯,其他部分也沒事。

    另外從安全性來說,宏內核技術相當於一套大房子,只要拿了大門鑰匙,可以進入每一個房間;而鴻蒙使用的微內核技術,相當於每個房間都有不同的鑰匙,安全性大大提升。

  • hibaby338

    2019-08-12 19:31

    鴻蒙OS在華為HDC2019開發者大會上正式發布,華為消費者業務CEO余承東向媒體介紹了華為鴻蒙操作系統,鴻蒙操作系統有幾個關鍵詞:微內核、全場景、分布式,這其中就包括了大家今天想知道的微內核。

    https://i1.ask543.net/uploads/6e/7f/5/2b294000067e80dcf2c01.jpg

    到底什麼是微內核?

    https://i1.ask543.net/uploads/e3/0d/6/2b28a0000673b89c98dd5.jpg

    簡單來說微內核就好像是聯邦制,國家政府只掌握軍隊、憲法等核心權利之外,各州擁有較大的靈活性、創造性,他們擁有地方立法權和地方稅收政策。宏內核就是中央集權、一黨專政,幾乎任何事情需要內核參與處理。

    https://i1.ask543.net/uploads/8c/cb/d/174f70007f12eb0616548.jpg

    就跟CISC複雜指令集、以及RISC精簡指令集一樣,微內核和宏內核一樣,也是在不同時期操作系統的技術選型。微內核是內核部分只負責地址空間、進程間通信、以及線程管理等核心功能,其他文件系統、驅動程序等服務功能全都放在內核之外;宏內核則是將幾乎所有服務功能都放在系統內核,使用的時候直接調用,服務功能包括內存管理、進程管理等。

    現在的主流操作系統中,Unix/Linux是宏內核,移動端Android和iOS也是宏內核,Windows和macOS是微內核為主,不過Windows和macOS可以算作是混合內核設計,混合內核有很大的優勢,本質上用微內核的方式來設計內核,而在實際上運用宏內核的方式,將一些重要的服務組件放進內核空間成為混合內核。

    鴻蒙操作系統到底前景如何

    余承東在華為HDC2019開發者大會上,余承東講到了鴻蒙操作系統,鴻蒙操作系統有幾個關鍵詞:微內核、全場景、分布式。而且余承東直言,鴻蒙OS一夜之間就可以讓Android應用適配鴻蒙OS,而且性能要比Android快幾倍,華為的方舟編譯器還能編譯C/C++/Java/Kotlin等眾多語言,看上去鴻蒙操作系統非常美好。

    不過可能事實上沒有大家想像的那麼美好,微內核也未必就一定比宏內核好 ,微內核更不是華為的發明。全場景不管是Windows/macOS/Linux、還是移動端的iOS/Android本身都具有這樣的底層能力,可是在沒有搭建起生態之前都是妄談。分布式更不用說了,這同樣不是新概念,不過分布式的理念確實適合物聯網。

    余承東說鴻蒙一夜之間可以取代Android,而且性能是Android的數倍,真的有這樣的實力,華為完全沒有必要給Android機會,而且還會獲得其他廠商的支持。余承東這麼說是要給對方一個下馬威,然後能夠為鴻蒙爭取三到五年的時間,這個時間可以讓華為有更多的時間來準備。

    還是那句話,中國人不能永遠沒有自己的操作系統和處理器晶片,現在Deepin Linux和鴻蒙OS現在總算是有了一些實質性的進步。飯要一口一口吃、要一步一步走,咱不能夜郎自大反而要更加發奮圖強,沒有核心技術總是有被卡脖子的危險。

    本文為字節跳動簽約作者EmacserVimer愛問問原創文章,未經允許轉載、抄襲必究!