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

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

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

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

鴻蒙系統(tǒng)HarmonyOS ? 來源:CSDN博主 ? 作者:beyondma ? 2021-03-23 15:01 ? 次閱讀

當(dāng)鴻蒙OS宣布開源的時(shí)候,各種空洞的炒作,幾乎把國產(chǎn)操作系統(tǒng)的技術(shù)本質(zhì)掩蓋了,雖然筆者沒親眼見過鴻蒙的代碼,也沒用方舟成功編譯什么程序,不過當(dāng)華為官宣鴻蒙將使用微內(nèi)核的時(shí)候其實(shí)這款OS的風(fēng)格就已經(jīng)確定了,因?yàn)檫@就是內(nèi)核的價(jià)值和意義。

記得十幾年前筆者剛剛畢業(yè),初次進(jìn)入嵌入式開發(fā)的圈子,那時(shí)總感覺操作系統(tǒng)距離我很遠(yuǎn),甚至有些高不可攀。當(dāng)時(shí)看到CSDN論壇上各種有關(guān)WINCE、MINIGUI等嵌入式OS的發(fā)貼時(shí),那些生硬的代碼真是給我當(dāng)時(shí)還年輕的心靈留下了巨大的陰影,不過這十年來雖然工作和嵌入式漸行漸遠(yuǎn),但是不斷總結(jié)經(jīng)驗(yàn)回頭來看,感覺操作內(nèi)核的設(shè)計(jì)并不是一個(gè)純數(shù)學(xué)或者技術(shù)的建模過程,甚至還反應(yīng)了我們?nèi)粘I钪械暮芏嗟览怼?/p>

科技界有一句名言“如果你無法簡潔的表達(dá)你的想法,那只說明你還不夠了解它”,所以經(jīng)過了這些年的沉淀,筆者嘗試使用最通俗的語言來向大家解釋,什么是內(nèi)核、什么又是微內(nèi)核,閱讀本文不需要讀者具備什么操作系統(tǒng)的知識(shí)。

宏內(nèi)核vs微內(nèi)核的基礎(chǔ)邏輯

上世紀(jì)90年代,微內(nèi)核操作Minix的作者Tanenbaum與微內(nèi)核操作系統(tǒng)Linux的作者Linus,曾經(jīng)有一段非常著名的論戰(zhàn),(具體鏈接: https://www.oreilly.com/openbook/opensources/book/appa.html),這里筆者無意全文翻譯,只是想說即便是Linus這樣的大神級(jí)人物也難免會(huì)陷入誰優(yōu)誰劣的口水仗之中,而普通人士可能更難免俗,所以我們先擱置優(yōu)劣的爭議,先直觀來感受宏內(nèi)核與微內(nèi)核的架構(gòu)圖是什么樣子的。

圖1. 宏內(nèi)核架構(gòu)圖

圖1. 微內(nèi)核架構(gòu)圖

簡單的講宏內(nèi)核就是操作系統(tǒng)是個(gè)大管家,幾乎包辦一切,用戶應(yīng)用程序的需求直接向內(nèi)核提出就行;微內(nèi)核更向一個(gè)代理人,幾乎所有的驅(qū)動(dòng)、文件系統(tǒng)全部運(yùn)行在與用戶應(yīng)用程序平級(jí)的用戶模式下。

內(nèi)核類型的簡單類比

為了讓讀者理解起來更方便,接下來讓我們做一個(gè)比較簡單的類比,如果把操作系統(tǒng)看成一家公司,而宏內(nèi)核的特點(diǎn)是用戶請(qǐng)求直達(dá)內(nèi)核,內(nèi)核統(tǒng)一安排執(zhí)行,這代表此公司使用扁平化的管理架構(gòu),而微內(nèi)核的操作系統(tǒng)中則需要設(shè)立很多如驅(qū)動(dòng),文件系統(tǒng)等部門,這顯示公司使用制度化、等級(jí)化的管理架構(gòu)。

簡而之宏內(nèi)核代表的是層次簡單的扁平化管理風(fēng)格,微內(nèi)核則代表多部門的制度化管理風(fēng)格。

基礎(chǔ)概念釋義

上下文及上下文切換:這個(gè)名詞經(jīng)常出現(xiàn)在各類操作系統(tǒng)的書籍當(dāng)中,還是以公司為例,上下文就代表了處理一個(gè)項(xiàng)目所需要的相關(guān)材料、文件,而上下文切換則代表這些材料文件在不同部門(進(jìn)程)或者領(lǐng)導(dǎo)(CPU)之間的流轉(zhuǎn)。

狀態(tài)保持(快照)及恢復(fù):假設(shè)這樣一種場景,我正在領(lǐng)導(dǎo)的辦公室中匯報(bào)工作,此時(shí)外面另一個(gè)人有更重要的事情向領(lǐng)導(dǎo)匯報(bào),由于涉及權(quán)限問題需要我先退出他的辦公室,那么我在退出前需要做一次狀態(tài)快照,以便領(lǐng)導(dǎo)處理完緊急事務(wù)后可以繼續(xù)處理我的工作。這就是計(jì)算機(jī)中狀態(tài)保持與恢復(fù)的過程。

基本推論

運(yùn)行效率宏內(nèi)核更優(yōu):相信大家都有過跑部門跑公章的經(jīng)歷,很多時(shí)間、精力都浪費(fèi)在了部門(進(jìn)程)之間的上下文切換(上文已經(jīng)釋義)中了,微內(nèi)核在效率方面肯定是處于劣勢的,所以目前的主流操作系統(tǒng)如Linux和Windows本質(zhì)上使用的都是宏內(nèi)核,當(dāng)然有讀者可能會(huì)提出Windows使用的是混合內(nèi)核,不過這種混合內(nèi)核也是以效率優(yōu)先的扁平化架構(gòu),本質(zhì)上還是宏內(nèi)核。

宏內(nèi)核vs微內(nèi)核 誰更安全

有關(guān)安全性的比較,其實(shí)僅憑直覺就能得到正確結(jié)論。正如各位日常所見,正規(guī)軍隊(duì)采用的都是“下級(jí)服從上級(jí)、命令絕對(duì)執(zhí)行”的管理方式,而只有游擊隊(duì)才搞會(huì)扁平化管理的。其中邏輯也不難理解,扁平化雖然能有比較高的效率,但是難免會(huì)在身份鑒別、數(shù)據(jù)傳遞的過程中出現(xiàn)紕漏,從而給入侵者可稱之機(jī)。

而目前已有部分宏內(nèi)核如sel4(Github地址:https://github.com/seL4/seL4)已經(jīng)被形式化證明無誤(論文地址:http://ts.data61.csiro.au/publications/nicta_full_text/955.pdf),

對(duì)于sel4的形式化證明筆者在這里多聊幾句,從本質(zhì)上來說sel4的內(nèi)核代碼只有1萬行左右,而linux的內(nèi)核代碼已經(jīng)突破了2000萬行,所以微內(nèi)核的sel4由于其代碼數(shù)量較小,所以研究人員干脆將其內(nèi)核抽象成一個(gè)有限狀態(tài)機(jī),進(jìn)而證明在狀態(tài)遷移與躍遷的過程中都不會(huì)發(fā)生會(huì)被惡意利用的漏洞,從而保證整個(gè)體系的安全。當(dāng)然這個(gè)安全也有前提:

一、不有有內(nèi)鬼:即生成內(nèi)核的編譯器、鏈接器與操作運(yùn)行的硬件環(huán)境如DMA等設(shè)備不能被提前惡意植入后門。

二、不能有密碼泄露:形式化驗(yàn)證只能保證制度體系本身不出問題,如果用戶將自身密碼泄露那系統(tǒng)是無法防范的。

不過我們也知道宏內(nèi)核的操作系統(tǒng)尤其是Windows,經(jīng)常會(huì)暴出安全漏洞,用戶在沒有泄露密碼且沒使用問題硬件的情況下,還是會(huì)遭到被黑客入侵。所以在安全性對(duì)比上微內(nèi)核可謂優(yōu)勢明顯。

宏內(nèi)核vs微內(nèi)核 誰實(shí)時(shí)性強(qiáng)

這個(gè)問題的答案可能與讀者的第一反應(yīng)不同,效率更優(yōu)的宏內(nèi)核在實(shí)時(shí)性方面的表現(xiàn)其實(shí)不如微內(nèi)核。那些對(duì)于實(shí)時(shí)性要求極高的軍用操作系統(tǒng)(如vxWorks等)使用的都是微內(nèi)核架構(gòu)。

請(qǐng)想象這樣一個(gè)場景,假如我是公司的銷售部負(fù)責(zé)人,正在向總經(jīng)理匯報(bào)明年的銷售計(jì)劃,這時(shí)總經(jīng)理狀態(tài)一般辦公室屏蔽來訪,手機(jī)屏蔽來電,專門處理我的匯報(bào),恰在此時(shí)讀者做為戰(zhàn)略部負(fù)責(zé)人帶著阿里即將收購公司的消息,來到總經(jīng)理辦公室門口,請(qǐng)求匯報(bào)。假設(shè)此時(shí)有關(guān)阿里收購匯報(bào)的優(yōu)先級(jí)是高于其它所有工作的優(yōu)先級(jí),所以總經(jīng)理會(huì)把我匯報(bào)的內(nèi)容做一下狀態(tài)保持(快照),盡快安排戰(zhàn)略部負(fù)責(zé)人進(jìn)來匯報(bào)。

由于宏內(nèi)核的扁平化架構(gòu),幾乎所有請(qǐng)求都是直達(dá)總經(jīng)理的,所以總經(jīng)理對(duì)于來訪及來電的屏蔽時(shí)間就會(huì)變得不可控,而反觀微內(nèi)核此時(shí)多部門的制度化架構(gòu)優(yōu)勢開始顯現(xiàn),因?yàn)榭偨?jīng)理一般只要核對(duì)一下其它部門的處理過程是否合規(guī),然后簽名即可,因此微內(nèi)核的最長屏蔽時(shí)間是可預(yù)期的。

So當(dāng)我們?cè)谙蛳滤伎家粚泳蜁?huì)發(fā)現(xiàn),制度化、流程化的微信核更能保證決策層在最短時(shí)間內(nèi)就給最重要的任務(wù)予以響應(yīng)。

宏內(nèi)核vs微內(nèi)核 誰更適合多核處理器

其實(shí)目前微內(nèi)核的回歸正好說明了微內(nèi)核與多處理器的硬件平臺(tái)配合會(huì)更好。請(qǐng)想象這樣的場景,假如我是一家餐廳的外賣小哥,我向內(nèi)核發(fā)送了回單位取餐的請(qǐng)求,這是內(nèi)核會(huì)把這個(gè)請(qǐng)求拆解為兩個(gè),一是我到達(dá)單位,狀態(tài)改為空閑的通知,二是幫我準(zhǔn)備指定的菜品,如果這家餐廳規(guī)模很小只有一個(gè)總經(jīng)理當(dāng)然沒有任何問題,不過如果餐廳有兩個(gè)決策人(雙核),那么我到達(dá)的通知可能先發(fā)給了總經(jīng)理1,而為我準(zhǔn)備菜品時(shí)總經(jīng)理1(核心1)有其它任務(wù)了,所以需要總經(jīng)理2(核心2)來安排協(xié)調(diào)了,這時(shí)就需要在總經(jīng)理1和總經(jīng)理2進(jìn)行上下文切換才可以滿足我的需求了。而微內(nèi)核在內(nèi)核下面設(shè)計(jì)有部門(服務(wù)進(jìn)程)的架構(gòu),就幾乎不存在宏內(nèi)核在核心間調(diào)研上下文切換的問題。所以在總體來說,宏內(nèi)核會(huì)在CPU核心間不斷進(jìn)行上下文切換,而微內(nèi)核則不斷在部門(進(jìn)程)間進(jìn)行上下文切換。

當(dāng)然了宏內(nèi)核針對(duì)多處理器時(shí)代也不是完全束手無策,比如Linux就提出了用戶協(xié)議棧的概念,其本質(zhì)邏輯就是成立一個(gè)直屬某一總經(jīng)理的特別行動(dòng)小組,這一小組的所有任務(wù)全部在此總經(jīng)理的領(lǐng)導(dǎo)下進(jìn)行,從而避免跨總經(jīng)理間的上下文切換以提高效率,其實(shí)這種方案也有一定局限性,比如出現(xiàn)單個(gè)總經(jīng)理根本管不過來特別組的情況,該如何優(yōu)化其實(shí)還是有待探索。

編輯:hfy

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

    關(guān)注

    0

    文章

    58

    瀏覽量

    13431
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2634

    瀏覽量

    66344
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙內(nèi)核源碼Task/線程技術(shù)分析

    前言 在鴻蒙內(nèi)核中,廣義上可理解為一個(gè)Task就是一個(gè)線程 一、怎么理解Task 1. 官方文檔是怎么描述線程 基本概念 從系統(tǒng)的角度看,線程是競爭系統(tǒng)資源的最小運(yùn)行單元。線程可以使用
    的頭像 發(fā)表于 10-18 10:42 ?2218次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>內(nèi)核</b>源碼Task/線程技術(shù)分析

    HarmonyOS學(xué)習(xí)之十:HarmonyOS內(nèi)核技術(shù)

    系統(tǒng)是無法防范的。我們知道內(nèi)核的操作系統(tǒng)尤其是Windows,經(jīng)常會(huì)暴出安全漏洞,用戶在沒有泄露密碼且沒使用問題硬件的情況下,還是會(huì)遭到被黑客入侵。所以在安全性對(duì)比上
    發(fā)表于 11-30 13:55

    華為“鴻蒙”所涉及的內(nèi)核到底是什么?

    最近內(nèi)核的概念常常被大家提及,同時(shí)還有Google Fuchisa這樣的內(nèi)核新星,這里讓我們一起來認(rèn)識(shí)下
    的頭像 發(fā)表于 06-28 11:55 ?3313次閱讀
    華為“<b class='flag-5'>鴻蒙</b>”所涉及的<b class='flag-5'>微</b><b class='flag-5'>內(nèi)核</b>到底是什么?

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

    內(nèi)核設(shè)計(jì)的基本思想是簡化內(nèi)核功能,在內(nèi)核之外的用戶態(tài)盡可能多地實(shí)現(xiàn)系統(tǒng)服務(wù),同時(shí)加入相互之間的安全保護(hù)。
    的頭像 發(fā)表于 08-14 17:20 ?1.2w次閱讀
    什么是<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ā)展歷史

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

    華為在松山湖的華為開發(fā)者大會(huì)上正式宣布了鴻蒙操作系統(tǒng),該系統(tǒng)其中一個(gè)亮點(diǎn)是 內(nèi)核。華為聲稱,
    的頭像 發(fā)表于 10-13 12:36 ?6163次閱讀

    鴻蒙系統(tǒng)是基于安卓嗎

    有網(wǎng)友詢問鴻蒙系統(tǒng)是基于安卓嗎?答案:鴻蒙系統(tǒng)并不是基于安卓! 安卓與鴻蒙手機(jī)操作系統(tǒng)都是基于L
    的頭像 發(fā)表于 06-18 16:17 ?3.1w次閱讀

    關(guān)于鴻蒙OS的內(nèi)核概念介紹

    按照發(fā)布會(huì)的PPT來看,鴻蒙OS有三層架構(gòu),第一層是內(nèi)核,第二層是基礎(chǔ)服務(wù),第三層是程序框架。所謂的第二層基礎(chǔ)服務(wù)應(yīng)該就是那些從內(nèi)核態(tài)空間移到用戶態(tài)空間的基礎(chǔ)服務(wù)程序。當(dāng)然,也可能部
    的頭像 發(fā)表于 03-23 14:51 ?4650次閱讀

    鴻蒙內(nèi)核源碼分析:task是內(nèi)核調(diào)度的單元

    系統(tǒng)的角度看,線程是競爭系統(tǒng)資源的最小運(yùn)行單元。線程可以使用或等待CPU、使用內(nèi)存空間等系統(tǒng)資源,并獨(dú)立于其它線程運(yùn)行。 鴻蒙內(nèi)核每個(gè)進(jìn)
    發(fā)表于 11-23 15:51 ?22次下載
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>內(nèi)核</b>源碼分析:task是<b class='flag-5'>內(nèi)核</b>調(diào)度的單元

    鴻蒙內(nèi)核源碼分析 :內(nèi)核最重要結(jié)構(gòu)體

    為何鴻蒙內(nèi)核源碼分析系列開篇就說 LOS_DL_LIST ? 因?yàn)樗?b class='flag-5'>鴻蒙 LOS 內(nèi)核中無處不在,在整個(gè)內(nèi)核占了極大的比重,豪不夸張的說
    發(fā)表于 11-24 17:54 ?35次下載
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>內(nèi)核</b>源碼分析 :<b class='flag-5'>內(nèi)核</b>最重要結(jié)構(gòu)體

    內(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)openharmony 鴻蒙內(nèi)核的理解

    鴻蒙OS分布式操作系統(tǒng)是一款基于內(nèi)核的全場景分布式OS,是華為自主研發(fā)的操作系統(tǒng)
    的頭像 發(fā)表于 06-23 10:48 ?4125次閱讀

    鴻蒙內(nèi)核開發(fā)概述

    第一章 鴻蒙內(nèi)核開發(fā)概述1.1 鴻蒙系統(tǒng)有哪些內(nèi)容?鴻蒙系統(tǒng),就相當(dāng)于一套完整的PC軟件
    發(fā)表于 11-03 11:21 ?20次下載
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>內(nèi)核</b>開發(fā)概述

    什么是內(nèi)核、內(nèi)核

    操作系統(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ì)硬
    的頭像 發(fā)表于 02-17 14:32 ?1786次閱讀
    什么是<b class='flag-5'>宏</b><b class='flag-5'>內(nèi)核</b>、<b class='flag-5'>微</b><b class='flag-5'>內(nèi)核</b>?

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

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

    歡創(chuàng)播報(bào) 華為宣布鴻蒙內(nèi)核已超越Linux內(nèi)核

    1 華為宣布鴻蒙內(nèi)核已超越Linux內(nèi)核 ? 6月21日,在華為開發(fā)者大會(huì)上, HarmonyOS NEXT(鴻蒙NEXT)——真正獨(dú)立于安卓和iOS的
    的頭像 發(fā)表于 06-27 11:30 ?843次閱讀