精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

操作系統核心部分:什么是宏內核、微內核

strongerHuang ? 來源:碼農的荒島求生 ? 作者:碼農的荒島求生 ? 2022-05-27 09:05 ? 次閱讀

操作系統和普通的大型應用程序項目類似,都涉及代碼組織方式的問題,但操作系統的獨特之處在于其核心部分必須運行在內核態,kernel model,所謂內核態嚴格講是指在該狀態下程序擁有對硬件(hardware)的所有控制權,運行在用戶態的程序做不到這一點。

有的同學可能會有疑問,操作系統(或者說內核)不都是核心部分嗎?嚴格來講像進程管理調度、內存管理等就是核心部分,但像驅動等就不是那么核心了,那么這一部分也需要放在內核態嗎?

圍繞這一劃分,出現了兩種操作系統的設計方式,關于這兩種設計方法的爭論就和復雜指令集(CISC)與精簡指令集(RISC)哪個更好一樣至今沒有非常明確的定論。

大一統,全部運行在內核態

最簡單的劃分就是沒有劃分,我們可以把所有內核代碼放在內核態,內核中的任何代碼都擁有控制硬件的全部特權,顯然這種設計方法非常簡單,因為操作系統設計者不用費心去想哪一部分該放在內核態。

由于全部內核程序都運行在內核態,編譯好的內核程序就是一個單獨的二進制可執行文件,這時的操作系統運行起來后就是一個大進程,所有內核代碼運行在一個單獨的地址空間中,這和我們實現的稍微復雜的單進程應用程序類似,這種大一統的設計就是所謂的宏內核,monolithic kernel,個人認為叫“一體化內核”更形象些。

af873040-dd55-11ec-ba43-dac502259ad0.png

這種組織方式和TCP/IP協議棧的分層實現有點類似。

現在內核代碼已經組織好了,畢竟內核是為上層應用提供服務的,那么上層應用該怎樣調用內核代碼呢?這就是系統調用的作用,system call。

af9a9e78-dd55-11ec-ba43-dac502259ad0.png

上層應用程序通過系統調用與內核進行交互。

由于內核代碼唯一同一個地址空間中,因此內核中各部分的交互極為簡單,就是普通的函數調用,文件系統中的某塊cache可以非常容易的被虛擬內存系統共享使用。

但宏內核也是有缺點的,由于內核代碼位于同一個地址空間,代碼趨于復雜化,復雜就容易出錯,但內核和普通程序不同,一旦內核中某一模塊出現bug將導致整個內核崩潰,底層的內核崩潰后上層的應用程序就無法繼續正常推進,整個系統就下圖一樣。。crash

當然也有人不在乎在這一點,Linus認為內核中有bug正常,有bug就找到它、修復它而不是用某種機制試圖忽略它,沒錯,C++中的異常就是試圖忽略bug的機制,這就是為什么很多公司的規范中禁止使用異常的原因。

總之,內核崩潰后就必須重啟計算機。

保留核心,非必要不留在內核

為減少內核崩潰的風險,一個簡單的辦法就是讓內核盡量精簡,只保留核心部分運行在內核態,其它代碼以用戶態進程的形式運行,就像這樣:

afe8222e-dd55-11ec-ba43-dac502259ad0.png

運行在用戶態的操作系統程序被稱為server,像負責文件操作的File Server等,此時用戶進程想要使用操作系統提供的服務的話就必須借助進程間通信,inter-process communication,即IPC,借助內核,消息從一個進程發送到另一個進程然后等待返回。

這樣,內核只需要對上層應用提供一些簡單的接口即可,像創建進程、發送消息等,這種實現方式可以讓內核盡可能簡單,因為大部分內核程序都運行在用戶態,且運行在不同的地址空間中,此時設備驅動中的bug不會影響到內核,這種操作系統的實現方式就被稱為微內核, micro kernel。

就像宏內核那樣,微內核也有自己的缺點,那就是性能。由于宏內核的代碼都在同一個地址空間中,因此模塊間的交互可以非常簡單,簡單的函數調用即可,但模塊間交互對微內核來說則可能涉及進程間通信,看上圖,如果某個應用程序需要請求使用File Server,這條鏈路涉及到:

請求:應用程序 -> 內核 -> File server返回:Filer server -> 內核 -> 應用程序

每一個"->"都涉及上下文切換,而這對宏內核來說則簡單很多。

現實中是什么樣子?

現實的操作系統中兩種實現方式都很常見,Linux以及許多Unix就是典型的宏內核,而Mac OS X 以及 Windows NT則一般認為是微內核,華為的鴻蒙Harmony OS則宣傳是微內核。

有趣的是,對Linus創建Linux影響極大的MINIX操作系統也是微內核,而Linux則是宏內核,難怪MINIX的作者——也是操作系統這門課的教授說過,如果Linus是他的學生的話那么操作系統系統這門課的期末考試Linus可能很難通過,哈哈,因為MINX的作者認為在Linux被創造出來的上世紀90年代竟然還有人以宏內核的方式來編寫操作系統,這簡直不可思議,而Linus則不以為意,并進行了火爆的回擊,關于這一段的八卦后續有機會和大家聊聊,非常有趣。

可以看到操作系統的設計方式就和CPU關于復雜指令集與精簡指令集的設計一樣分成了兩派,關于宏內核與微內核孰優孰劣爭論至今依然沒有定論。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11230

    瀏覽量

    208934
  • 操作系統
    +關注

    關注

    37

    文章

    6742

    瀏覽量

    123192
  • 微內核
    +關注

    關注

    0

    文章

    57

    瀏覽量

    13422

原文標題:操作系統如何實現:什么是宏內核、微內核

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    #操作系統原理 用戶線程和內核線程

    內核操作系統
    電子技術那些事兒
    發布于 :2022年10月17日 22:31:14

    內核操作系統有什么好處?

    。可見Windows在內核之上來說的確是一個很干練的系統。其實這是微軟的一貫作風,就算是目前我們使用的Win 7旗艦版其內核也是十分短小精悍的。那么微內核操作系統究竟是有什么好處呢?首
    發表于 01-11 13:11

    RTOS的實時內核內核解析

    使得CPU的利用更為有效。 需要指出的是,實時內核并不等于實時操作系統,實時內核只是實時操作系統的一部分
    發表于 02-19 06:36

    HarmonyOS鴻蒙操作系統之什么是“基于內核的全場景分布式操作系統”?

    HarmonyOS鴻蒙操作系統之什么是“基于內核的全場景分布式操作系統”?即使作為理工科的人咋一眼看上去似乎也不太懂這是什么,就像區塊鏈這個概念剛出來一樣,普通人都是一臉懵B(當然現
    發表于 09-23 17:06

    嵌入式操作系統內核研究

    嵌入式操作系統是嵌入式系統應用的核心。而內核完成操作系統核心的功能,本文通過對兩種嵌入式
    發表于 07-30 14:55 ?22次下載

    什么是操作系統內核

    什么是操作系統內核 操作系統內核是指大多數操作系統核心部分。它由
    發表于 06-17 07:23 ?9903次閱讀

    RTX實時操作系統內核演示

    本文檔詳細介紹了 RTX實時操作系統內核演示教程
    發表于 08-25 15:52 ?9次下載

    為什么要選擇微內核操作系統

    例如原來在內核操作系統中,用戶應用程序是通過系統調用,陷入到內核中,然后再讀取、訪問文件。而在微內核操
    的頭像 發表于 06-03 14:35 ?4077次閱讀

    高性能混合微內核操作系統RT-Thread Smart達到業界領先的技術水準

    通常來講操作系統分為內核內核兩種不同的架構,如下圖所示,操作系統中分為了用戶域和
    的頭像 發表于 09-11 15:33 ?2922次閱讀
    高性能混合微<b class='flag-5'>內核操作系統</b>RT-Thread Smart達到業界領先的技術水準

    淺談鴻蒙操作系統內核

    華為在松山湖的華為開發者大會上正式宣布了鴻蒙操作系統,該系統其中一個亮點是 內核。華為聲稱,內核
    的頭像 發表于 10-13 12:36 ?6125次閱讀

    內核內核的比較與分析

    混合內核實質上也是內核,而外內核是一種比較極端的設計方法,目前還處于研究階段,所以我們就著重討論內核
    發表于 03-17 16:05 ?11次下載
    <b class='flag-5'>微</b><b class='flag-5'>內核</b>與<b class='flag-5'>宏</b><b class='flag-5'>內核</b>的比較與分析

    安全關鍵的嵌入式實時操作系統內核

    在硏究 ARINC-653標準的時空隔離原理基礎上,設計并實現一種安全關鍵的嵌入式實時操作系統。采用內核設計,通過基于 Manifest的任務與分區管理、軟硬件結合的分區保護及軟件靜態驗證,提升
    發表于 06-21 16:23 ?5次下載

    什么是內核內核

    操作系統和普通的大型應用程序項目類似,都涉及代碼組織方式的問題,但操作系統的獨特之處在于其核心部分必須運行在內核態,kernel model,所謂
    的頭像 發表于 02-17 14:32 ?1703次閱讀
    什么是<b class='flag-5'>宏</b><b class='flag-5'>內核</b>、<b class='flag-5'>微</b><b class='flag-5'>內核</b>?

    Linux 是操作系統還是內核

    內核是每個操作系統的中心。這不僅僅是 Linux 的事情。Windows 和 macOS 也有內核
    發表于 03-15 10:05 ?1074次閱讀

    內核實時操作系統的介紹

    內核實時操作系統(Microkernel Real-Time Operating System, μRTOS)是一種專為實時設計的操作系統。它采用
    的頭像 發表于 05-11 17:13 ?470次閱讀