18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

3天內不再提示

什么是宏內核、微內核?

jf_78858299 ? 來源:碼農的荒島求生 ? 作者:碼農的荒島求生 ? 2023-02-17 14:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

大一統(tǒng),全部運行在內核態(tài)

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

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

圖片

這種組織方式和TCP/IP協(xié)議棧的分層實現(xiàn)有點類似。

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

圖片

上層應用程序通過系統(tǒng)調用與內核進行交互。

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

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

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

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

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

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

圖片

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

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

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

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

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

現(xiàn)實中是什么樣子?

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

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 操作系統(tǒng)

    關注

    37

    文章

    7266

    瀏覽量

    128070
  • 硬件
    +關注

    關注

    11

    文章

    3535

    瀏覽量

    68477
  • 代碼
    +關注

    關注

    30

    文章

    4924

    瀏覽量

    72381
  • 微內核
    +關注

    關注

    0

    文章

    58

    瀏覽量

    13804
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    windows內核的相關資料推薦

    Linux 是內核或者單內核,windows是內核,最大的區(qū)別是所有的內核功能都被整體編譯在
    發(fā)表于 12-16 07:52

    什么是內核_內核的發(fā)展歷史

    內核設計的基本思想是簡化內核功能,在內核之外的用戶態(tài)盡可能多地實現(xiàn)系統(tǒng)服務,同時加入相互之間的安全保護。內核只提供最基礎的服務,比如多進程
    的頭像 發(fā)表于 08-14 17:20 ?1.3w次閱讀
    什么是<b class='flag-5'>微</b><b class='flag-5'>內核</b>_<b class='flag-5'>微</b><b class='flag-5'>內核</b>的發(fā)展歷史

    高性能混合微內核操作系統(tǒng)RT-Thread Smart達到業(yè)界領先的技術水準

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

    淺談鴻蒙操作系統(tǒng)的內核

    華為在松山湖的華為開發(fā)者大會上正式宣布了鴻蒙操作系統(tǒng),該系統(tǒng)其中一個亮點是 內核。華為聲稱,內核的啟用,使其速度大大提升,并且在安全性上產生變革性突破,
    的頭像 發(fā)表于 10-13 12:36 ?6964次閱讀

    Rk3399麒麟Linux系統(tǒng)分類介紹

    有哪些,基于linux哪個版本呢?聯(lián)智通達為您解答: 銀河麒麟 銀河麒麟系統(tǒng)操作系統(tǒng)借鑒了 Linux、FreeBSD、Mach 和 K42 等操作系統(tǒng)內核技術,兼顧內核
    的頭像 發(fā)表于 01-15 14:16 ?4645次閱讀

    鴻蒙系統(tǒng)優(yōu)勢在哪里?

    、智慧屏等智能終端。 鴻蒙系統(tǒng)優(yōu)勢二:華為harmony os打破設備與設備之間的兼容性難題,甚至是兼容安卓軟件。 鴻蒙系統(tǒng)優(yōu)勢三:鴻蒙操作系統(tǒng)的核心技術是區(qū)別于安卓內核內核技術
    的頭像 發(fā)表于 06-21 16:42 ?1.3w次閱讀
    鴻蒙系統(tǒng)優(yōu)勢在哪里?

    鴻蒙系統(tǒng)設計:內核vs內核的基礎邏輯

    當鴻蒙OS宣布開源的時候,各種空洞的炒作,幾乎把國產操作系統(tǒng)的技術本質掩蓋了,雖然筆者沒親眼見過鴻蒙的代碼,也沒用方舟成功編譯什么程序,不過當華為官宣鴻蒙將使用內核的時候其實這款OS的風格就已經
    的頭像 發(fā)表于 03-23 15:01 ?5379次閱讀

    Rk3399麒麟Linux系統(tǒng)有哪些,基于linux哪個版本

    有哪些,基于linux哪個版本呢?聯(lián)智通達為您解答: 銀河麒麟系統(tǒng)操作系統(tǒng)借鑒了 Linux、FreeBSD、Mach 和 K42 等操作系統(tǒng)內核技術,兼顧內核
    發(fā)表于 01-19 15:35 ?5472次閱讀

    內核內核的比較與分析

    混合內核實質上也是內核,而外內核是一種比較極端的設計方法,目前還處于研究階段,所以我們就著重討論內核
    發(fā)表于 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>的比較與分析

    操作系統(tǒng)核心部分:什么是內核、內核

    當然也有人不在乎在這一點,Linus認為內核中有bug正常,有bug就找到它、修復它而不是用某種機制試圖忽略它,沒錯,C++中的異常就是試圖忽略bug的機制,這就是為什么很多公司的規(guī)范中禁止使用異常的原因。
    的頭像 發(fā)表于 05-27 09:05 ?3248次閱讀

    【Linux內核】從小小的定義窺探Linux內核的精妙設計

    【Linux內核】從小小的定義窺探Linux內核的精妙設計
    的頭像 發(fā)表于 08-31 13:30 ?2575次閱讀

    10個關于內核的問題

    如果有個一個不得不用內核的理由,那一定是安全。實時上疫情這幾年,汽車和云的實踐表明,內核幾乎肯定會應用加速。我們提煉了10個關于
    的頭像 發(fā)表于 12-13 09:55 ?1145次閱讀

    Linux內核中的/container_of分析

    今天在看平臺設備實現(xiàn)的時候,看到to_xxx開頭的“函數(shù)”。包括在內核中也有很多此類的“函數(shù)”,其實他們都是container_of的。因為內核是鏈表和結構體的世界,因此內核中有大量
    發(fā)表于 06-23 14:26 ?727次閱讀
    Linux<b class='flag-5'>內核</b>中的<b class='flag-5'>宏</b>/container_of分析

    鴻蒙使用的是內核?

    我們常說,看一個系統(tǒng)是不是自研,就看它的內核,常見的內核分為:內核內核,當然還有兩者結合體
    的頭像 發(fā)表于 01-30 16:43 ?1069次閱讀
    鴻蒙使用的是<b class='flag-5'>微</b><b class='flag-5'>內核</b>?

    QNX與Linux基礎差異對比

    對于QNX系統(tǒng)和Linux系統(tǒng)的內核差異,我們拋開內核、內核之類的爭議不談。單純從開發(fā)應用的角度而言,QNX和Linux系統(tǒng)的差異到底有
    發(fā)表于 04-17 10:52 ?1731次閱讀