chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是宏內(nèi)核、微內(nèi)核?

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

最簡(jiǎn)單的劃分就是沒有劃分 ,我們可以把所有內(nèi)核代碼放在內(nèi)核態(tài),內(nèi)核中的任何代碼都擁有控制硬件的全部特權(quán),顯然這種設(shè)計(jì)方法非常簡(jiǎn)單,因?yàn)椴僮飨到y(tǒng)設(shè)計(jì)者不用費(fèi)心去想哪一部分該放在內(nèi)核態(tài)。

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

圖片

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

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

圖片

上層應(yīng)用程序通過系統(tǒng)調(diào)用與內(nèi)核進(jìn)行交互。

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

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

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

總之,內(nèi)核崩潰后就必須重啟計(jì)算機(jī)。

保留核心,非必要不留在內(nèi)核

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

圖片

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

這樣,內(nèi)核只需要對(duì)上層應(yīng)用提供一些簡(jiǎn)單的接口即可,像創(chuàng)建進(jìn)程、發(fā)送消息等,這種實(shí)現(xiàn)方式可以讓內(nèi)核盡可能簡(jiǎn)單,因?yàn)榇蟛糠謨?nèi)核程序都運(yùn)行在用戶態(tài),且運(yùn)行在不同的地址空間中,此時(shí)設(shè)備驅(qū)動(dòng)中的bug不會(huì)影響到內(nèi)核,這種操作系統(tǒng)的實(shí)現(xiàn)方式就被稱為微內(nèi)核, micro kernel。

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

請(qǐng)求:應(yīng)用程序 -> 內(nèi)核 -> File server
返回:Filer server -> 內(nèi)核 -> 應(yīng)用程序

每一個(gè)"->"都涉及上下文切換,而這對(duì)宏內(nèi)核來說則簡(jiǎn)單很多。

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

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

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

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

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

    關(guān)注

    37

    文章

    7142

    瀏覽量

    125534
  • 硬件
    +關(guān)注

    關(guān)注

    11

    文章

    3481

    瀏覽量

    67459
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4899

    瀏覽量

    70659
  • 微內(nèi)核
    +關(guān)注

    關(guān)注

    0

    文章

    58

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    windows內(nèi)核的相關(guān)資料推薦

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

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

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

    高性能混合微內(nèi)核操作系統(tǒng)RT-Thread Smart達(dá)到業(yè)界領(lǐng)先的技術(shù)水準(zhǔn)

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

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

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

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

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

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

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

    鴻蒙系統(tǒng)設(shè)計(jì):內(nèi)核vs內(nèi)核的基礎(chǔ)邏輯

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

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

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

    內(nèi)核內(nèi)核的比較與分析

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

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

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

    【Linux內(nèi)核】從小小的定義窺探Linux內(nèi)核的精妙設(shè)計(jì)

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

    10個(gè)關(guān)于內(nèi)核的問題

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

    Linux內(nèi)核中的/container_of分析

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

    鴻蒙使用的是內(nèi)核

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

    QNX與Linux基礎(chǔ)差異對(duì)比

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