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)核的發(fā)展歷史

h1654155282.3538 ? 來(lái)源:陳翠 ? 2019-08-14 17:20 ? 次閱讀

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

微內(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)程調(diào)度、多進(jìn)程通信(IPC)等。其中進(jìn)程通信是作為連接應(yīng)用與用戶態(tài)系統(tǒng)服務(wù)的橋梁。

宏內(nèi)核與微內(nèi)核的對(duì)比示意圖

宏內(nèi)核系統(tǒng)相關(guān)的服務(wù)基本都是放于內(nèi)核態(tài)內(nèi)核中,例如文件系統(tǒng)、設(shè)備驅(qū)動(dòng)、虛擬內(nèi)存管理、網(wǎng)絡(luò)協(xié)議棧等;而微內(nèi)核則把更多的系統(tǒng)服務(wù)(例如文件系統(tǒng)、POSIX服務(wù)、網(wǎng)絡(luò)協(xié)議棧甚至外設(shè)驅(qū)動(dòng))放到用戶態(tài)應(yīng)用,形成一個(gè)個(gè)服務(wù),等待其他應(yīng)用的請(qǐng)求。而后來(lái),為了在宏內(nèi)核與微內(nèi)核之間揚(yáng)長(zhǎng)避短,也發(fā)展出了中間的混合內(nèi)核的形態(tài),部分服務(wù)也會(huì)放置于內(nèi)核中。

微內(nèi)核的發(fā)展歷史

微內(nèi)核這個(gè)概念從提出開(kāi)始就在不斷地發(fā)展、完善進(jìn)步之中,到目前為止可以分為三代。

第一代微內(nèi)核:從無(wú)到有

第一代微內(nèi)核的主要代表是Mach,該系統(tǒng)由美國(guó)卡耐基梅隆大學(xué)的AvieTevanian和RichardRashid主導(dǎo)開(kāi)發(fā)。在Mach剛剛開(kāi)始設(shè)計(jì)時(shí),UNIX的發(fā)展正如日中天,所以Mach在設(shè)計(jì)時(shí)的一大目標(biāo)就是兼容UNIX,但是與UNIX不同的是Mach嘗試使用微內(nèi)核架構(gòu)去設(shè)計(jì)。Mach以IPC是作為所有系統(tǒng)服務(wù)與內(nèi)核交換數(shù)據(jù)的基礎(chǔ)機(jī)制,充分運(yùn)用IPC、虛擬內(nèi)存、多進(jìn)程等特性將冗余的系統(tǒng)服務(wù)移出內(nèi)核作為進(jìn)程運(yùn)行。

1986年,經(jīng)過(guò)兩年的開(kāi)發(fā),第一版的Mach發(fā)布后的第二年,Mach就發(fā)布了第2版,不過(guò)由于時(shí)間倉(cāng)促,加之沒(méi)有足夠的人手與資金,所以此時(shí)Mach內(nèi)核并不提供完全的系統(tǒng)服務(wù)。

為了支撐系統(tǒng)上層運(yùn)行,這一版的內(nèi)核包含了大量4.3版本的BSD系統(tǒng)(UNIX的一個(gè)分支)代碼提供系統(tǒng)服務(wù),并且BSD系統(tǒng)服務(wù)運(yùn)行在內(nèi)核狀態(tài),這導(dǎo)致Mach內(nèi)核的代碼體積甚至大于常規(guī)UNIX內(nèi)核。

第一版和第二版的Mach主要做了如下工作:

1.驗(yàn)證了微內(nèi)核的可行性;

2.在多處理器計(jì)算機(jī)上進(jìn)行移植驗(yàn)證了微內(nèi)核在多處理器計(jì)算機(jī)上的運(yùn)行;

3.最后為了提高IPC的效率,Mach使用共享內(nèi)存機(jī)制來(lái)完成IPC。

而Mach的共享內(nèi)存機(jī)制是在虛擬內(nèi)存技術(shù)的支持下實(shí)現(xiàn)的,只有需要對(duì)內(nèi)存進(jìn)行寫入時(shí)才進(jìn)行復(fù)制。這么一處理比每次都復(fù)制一遍內(nèi)存節(jié)省了內(nèi)存使用同時(shí)又加快了IPC機(jī)制的處理時(shí)間,這個(gè)改進(jìn)稱為寫時(shí)復(fù)制,并且在如今的通用操作系統(tǒng)如Linux中常常用到。

經(jīng)過(guò)測(cè)試,Mach2.5的效率最多比UNIX少25%,但是考慮到Mach帶來(lái)的可靠性、可拓展性、安全性,這個(gè)效率損失尚可以接受。

當(dāng)然此時(shí)Mach內(nèi)核還不算完全的微內(nèi)核。而考慮到微內(nèi)核可以更高效地利用多處理器計(jì)算機(jī)的處理器核心資源,人們期待著等Mach把系統(tǒng)服務(wù)都搬到內(nèi)核之外后可以把運(yùn)行效率損失降下來(lái)。

同時(shí)Mach在微內(nèi)核方面小小的嘗試迅速吸引了大批公司與組織的注意,開(kāi)放軟件基金會(huì)(OpenSoftwareFoundation,OSF)宣布下一代系統(tǒng)OSF/1將基于Mach的內(nèi)核,NeXTSTEP也將使用Mach2.5,甚至IBM也打算利用Mach構(gòu)建WorkplaceOS。蘋果公司這個(gè)時(shí)候也出手了,蘋果公司也從此基于Mach2.5打造其操作系統(tǒng)內(nèi)核XNU,XNU的構(gòu)成如下圖所示,Mach作為內(nèi)核的內(nèi)環(huán),外環(huán)右側(cè)是蘋果的驅(qū)動(dòng)框架(I/OKit),外環(huán)左側(cè)是BSD的系統(tǒng)服務(wù)代碼提供UNIX兼容的服務(wù)層,這三者共同協(xié)作向上層提供完整的系統(tǒng)服務(wù)。XNU廣泛地使用在蘋果公司的OSX、IOS等系統(tǒng)中。

這個(gè)時(shí)候由于UNIX系統(tǒng)廣泛使用帶來(lái)的商業(yè)利益,此時(shí)BSD系統(tǒng)開(kāi)發(fā)者與UNIX的擁有者AT&T陷入了法律大戰(zhàn),Mach使用的BSD相關(guān)代碼有了法律風(fēng)險(xiǎn)。

提升性能的期望和規(guī)避法律風(fēng)險(xiǎn)的需求推動(dòng)著Mach3.0的開(kāi)發(fā),Mach3.0的開(kāi)發(fā)目標(biāo)主要是為了替換BSD系統(tǒng)服務(wù),同時(shí)盡量多地將系統(tǒng)服務(wù)放到內(nèi)核之外去運(yùn)行,成為名副其實(shí)的微內(nèi)核設(shè)計(jì)。

經(jīng)過(guò)眾多開(kāi)發(fā)者3年的努力,Mach3.0于1990年發(fā)布,但是由于在系統(tǒng)服務(wù)之間完全使用IPC通信,而不是向宏內(nèi)核那樣直接進(jìn)行函數(shù)調(diào)用,即便是多處理器機(jī)器上運(yùn)行也性能損失慘重,Mach3.0最多比UNIX損失67%運(yùn)行效率,這導(dǎo)致Mach3.0以及其所代表的第一代微內(nèi)核設(shè)計(jì)被看衰。此后斷斷續(xù)續(xù)有在Mach的基礎(chǔ)上對(duì)性能進(jìn)行提升的嘗試,但是均不太理想,至此Mach成為了微內(nèi)核第一代先驅(qū)者。

第二代微內(nèi)核:解決性能問(wèn)題

第二代微內(nèi)核的主要代表是L3和L4,以及QNX系統(tǒng)使用的Neutrino內(nèi)核。前面第一代的微內(nèi)核Mach由于效率問(wèn)題雖然失敗了,但是微內(nèi)核的理念并沒(méi)有被放棄,德國(guó)的計(jì)算機(jī)科學(xué)家JochenLiedtke認(rèn)為Mach的IPC效率低下的原因就是因?yàn)镮PC部分不夠精簡(jiǎn),于是他開(kāi)發(fā)了L3和L4微內(nèi)核,對(duì)IPC部分進(jìn)行了很徹底的精簡(jiǎn):

1.內(nèi)核的IPC機(jī)制只是單純地傳遞信息,諸如安全權(quán)限檢查這類的代碼都省略掉,省略掉的功能全部由用戶進(jìn)程自己處理。如此一來(lái)IPC功能部分的代碼執(zhí)行時(shí)間大大縮短;

2.IPC不使用內(nèi)存?zhèn)鬟f消息,而使用寄存器傳遞消息,同時(shí)限制IPC每次傳遞的信息長(zhǎng)度,這樣省去了對(duì)內(nèi)存的訪問(wèn)時(shí)間。L4微內(nèi)核的IPC速度經(jīng)過(guò)測(cè)試要比Mach快20倍,這個(gè)令人驚訝的優(yōu)化效果吸引了眾多的目光,使微內(nèi)核的研究重新火熱起來(lái)。后面L4內(nèi)核又發(fā)展出了很多相關(guān)系統(tǒng),比如Pistachio、L4/MIPS與Fiasco等等,這些內(nèi)核組成了L4的大家族。

第二代微內(nèi)核的代表除了有L4內(nèi)核,也還有其他微內(nèi)核比如Exokernel、Rambler等,不過(guò)商業(yè)上最成功的則是目前黑莓公司旗下的QNX系統(tǒng)所使用的Neutrino內(nèi)核(QNX,1980年誕生,最初以QUICKUNIX為名,后改為QNX;2004年QNX被Harman國(guó)際收購(gòu);2010年Harman國(guó)際下被黑莓收購(gòu),QNX成為黑莓旗下的資產(chǎn)),QNX主要為高可靠領(lǐng)域提供解決方案,比如交通、能源、醫(yī)療、航天航空等。

第三代微內(nèi)核:主要重視安全問(wèn)題等

在前面兩代的基礎(chǔ)上,第三代微內(nèi)核蓬勃發(fā)展,許許多多微內(nèi)核都被開(kāi)發(fā)出來(lái),主要代表有:seL4、Fiasco.OC、NOVA等。

本來(lái)第一代微內(nèi)核的設(shè)計(jì)隔離了使內(nèi)核安全性降低的系統(tǒng)服務(wù),讓系統(tǒng)服務(wù)漏洞不會(huì)影響內(nèi)核,進(jìn)而提高了內(nèi)核安全性,可以說(shuō)是關(guān)上了破壞系統(tǒng)的門,但是第二代系統(tǒng)卻又給攻擊者開(kāi)了個(gè)窗戶。

由于第二代微內(nèi)核在內(nèi)核中省去了關(guān)于安全性檢查等步驟,把所有關(guān)于安全檢查功能的實(shí)現(xiàn)都交給系統(tǒng)服務(wù)自己去實(shí)現(xiàn),這導(dǎo)致系統(tǒng)服務(wù)的通信接口直接暴露給用戶態(tài),任何進(jìn)程都可能無(wú)限制地請(qǐng)求系統(tǒng)服務(wù),系統(tǒng)服務(wù)不得不花費(fèi)額外的代價(jià)來(lái)區(qū)分請(qǐng)求是否合法,容易造成拒絕服務(wù)攻擊。

比如正常的文件服務(wù)應(yīng)該是從虛擬文件系統(tǒng)服務(wù)-》文件系統(tǒng)服務(wù)-》磁盤驅(qū)動(dòng)服務(wù)這個(gè)流程來(lái)完成的,但是如果攻擊者如果繞過(guò)虛擬文件系統(tǒng)服務(wù),直接無(wú)限制地請(qǐng)求攻擊者本身沒(méi)有權(quán)限訪問(wèn)的文件系統(tǒng)服務(wù),使文件系統(tǒng)服務(wù)長(zhǎng)期處于滿載狀態(tài),讓其他進(jìn)程無(wú)法通過(guò)正常的虛擬文件系統(tǒng)得到文件系統(tǒng)服務(wù)。為了增強(qiáng)安全性,且不過(guò)分影響性能,人們開(kāi)始研發(fā)第三代微內(nèi)核。

seL4是在第二代內(nèi)核L4的基礎(chǔ)上發(fā)展而來(lái)的。seL4不僅僅繼承了L4內(nèi)核家族的高性能特性,還具備基于端點(diǎn)(enndpoint)的IPC機(jī)制。

這種IPC機(jī)制最大的特點(diǎn)是使用了能力空間的概念,進(jìn)程在使用IPC請(qǐng)求系統(tǒng)服務(wù)時(shí)必須具備相對(duì)應(yīng)的能力,進(jìn)程持有不可偽造的令牌來(lái)表示擁有請(qǐng)求某種服務(wù)的能力。令牌可以被復(fù)制,可以被轉(zhuǎn)移,還可以通過(guò)IPC進(jìn)行傳輸。令牌其實(shí)是一個(gè)指向存在于內(nèi)核空間內(nèi)核對(duì)象的指針,所以普通進(jìn)程并不能修改自身以及其他進(jìn)程的權(quán)限分配,但是內(nèi)核可以對(duì)令牌指定的權(quán)限進(jìn)行控制,從而保證了用戶態(tài)不能繞過(guò)能力空間這個(gè)機(jī)制對(duì)系統(tǒng)服務(wù)造成濫用。

seL4還是第一個(gè)完全通過(guò)形式化驗(yàn)證的內(nèi)核,通俗說(shuō)形式化驗(yàn)證就是在數(shù)學(xué)軟件的幫助下使用數(shù)學(xué)語(yǔ)言自動(dòng)化地推導(dǎo)檢查系統(tǒng)的每一個(gè)運(yùn)行狀態(tài)。seL4形式化驗(yàn)證相關(guān)論文。

其他的微內(nèi)核系統(tǒng):Fuchsia、Minix

Fuchsia是Google開(kāi)發(fā)的一款全新操作系統(tǒng),試圖覆蓋手機(jī)、平板甚至筆記本等一系列領(lǐng)域。Google為該系統(tǒng)配備了Vulkan圖形接口、3D桌面渲染Scenic、Flutter應(yīng)用開(kāi)發(fā)框架,還有一個(gè)稱為zircon的微內(nèi)核。

zircon內(nèi)核是從高通平臺(tái)的一個(gè)Bootloader項(xiàng)目:LittleKernel發(fā)展而來(lái)。zircon內(nèi)核屬于微內(nèi)核設(shè)計(jì),只提供IPC、進(jìn)程管理、地址空間管理功能。zircon區(qū)別于以進(jìn)程或者以文件為核心的設(shè)計(jì),zircon是以內(nèi)存為核心來(lái)設(shè)計(jì)的,內(nèi)存在zircon中是以對(duì)象的方式存在,可以通過(guò)channel通信機(jī)制傳遞虛擬內(nèi)存對(duì)象(Virtualmemoryobject)的句柄,進(jìn)程拿到句柄后可以把這塊內(nèi)存映射到自己的空間。

Minix系統(tǒng)則由荷蘭阿姆斯特丹的Vrije大學(xué)的AndrewS.Tanenbaum教授所開(kāi)發(fā)。

該系統(tǒng)最大的特點(diǎn)是可以故障隔離,自動(dòng)重啟失敗的服務(wù)。

Minix使用分層設(shè)計(jì),最底層的微內(nèi)核提供中斷處理、進(jìn)程管理、進(jìn)程通信等服務(wù),這一層運(yùn)行在內(nèi)核態(tài);中間層提供輪回服務(wù)(ReincarnationServer)、文件服務(wù)、進(jìn)程管理、X圖形服務(wù)以及驅(qū)動(dòng)等,這一層運(yùn)行在用戶態(tài),最上層為用戶進(jìn)程。

其中輪回服務(wù)負(fù)責(zé)在中間層的服務(wù)出現(xiàn)崩潰時(shí)重啟這些服務(wù),從而保證服務(wù)的自我修復(fù)。Minix由于其自我修復(fù)特性被英特爾管理引擎(ME)所選用,該管理引擎主要負(fù)責(zé)管理英特爾芯片的內(nèi)部模塊。

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

    評(píng)論

    相關(guān)推薦

    RTOS的實(shí)時(shí)內(nèi)核內(nèi)核解析

    使得CPU的利用更為有效。 需要指出的是,實(shí)時(shí)內(nèi)核并不等于實(shí)時(shí)操作系統(tǒng),實(shí)時(shí)內(nèi)核只是實(shí)時(shí)操作系統(tǒng)的一部分。 內(nèi)核是整個(gè)操作系統(tǒng)的基礎(chǔ),實(shí)時(shí)內(nèi)核同樣是實(shí)時(shí)操作系統(tǒng)的基礎(chǔ),目前很多實(shí)時(shí)
    發(fā)表于 02-19 06:36

    內(nèi)核什么時(shí)候發(fā)布?內(nèi)核有何優(yōu)勢(shì)?

    想了解下內(nèi)核什么時(shí)候發(fā)布的?內(nèi)核有何優(yōu)勢(shì)?
    發(fā)表于 10-10 10:09

    什么是內(nèi)核?

    什么是內(nèi)核內(nèi)核發(fā)展歷史
    發(fā)表于 03-07 06:36

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

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

    內(nèi)核與大內(nèi)核的相關(guān)資料下載

    內(nèi)核與大內(nèi)核是操作系統(tǒng)設(shè)計(jì)中的兩種不同的思想,這與 CPU 的設(shè)計(jì)中 RISC 和 CISC 構(gòu)架類似。其中,內(nèi)核的思想是,把盡量少的操
    發(fā)表于 12-20 07:11

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

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

    內(nèi)核的優(yōu)缺點(diǎn)

    內(nèi)核(Micro kernel)是提供操作系統(tǒng)核心功能的內(nèi)核的精簡(jiǎn)版本,它設(shè)計(jì)成在很小的內(nèi)存空間內(nèi)增加移植性,提供模塊化設(shè)計(jì),以使用戶安裝不同的接口,如DOS、Workplace OS
    的頭像 發(fā)表于 08-14 17:17 ?2.9w次閱讀

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

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

    怎么使用CMake編譯RTT內(nèi)核

    已經(jīng)大半個(gè)月沒(méi)有更新文章了,大家還記得之前作者寫的一篇關(guān)于RT-Thread的內(nèi)核移植的文章嗎?如果不記得沒(méi)關(guān)系。看如下是文章鏈接。
    的頭像 發(fā)表于 12-14 22:33 ?604次閱讀

    內(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'>內(nèi)核</b>的比較與分析

    L4內(nèi)核技術(shù)淺析

    L4內(nèi)核技術(shù)淺析說(shuō)明。
    發(fā)表于 04-07 14:22 ?20次下載
    L4<b class='flag-5'>微</b><b class='flag-5'>內(nèi)核</b>技術(shù)淺析

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

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

    zircon內(nèi)核啟動(dòng)代碼分析

    Zircon內(nèi)核的代碼是用C++寫的,C++和C的基礎(chǔ)語(yǔ)法差不多,C++新加入了一些面向?qū)ο蟮臇|西
    的頭像 發(fā)表于 06-11 09:14 ?2594次閱讀
    zircon<b class='flag-5'>微</b><b class='flag-5'>內(nèi)核</b>啟動(dòng)代碼分析

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

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

    內(nèi)核實(shí)時(shí)操作系統(tǒng)的介紹

    內(nèi)核實(shí)時(shí)操作系統(tǒng)(Microkernel Real-Time Operating System, μRTOS)是一種專為實(shí)時(shí)設(shè)計(jì)的操作系統(tǒng)。它采用內(nèi)核架構(gòu),以提高系統(tǒng)的可靠性、安全
    的頭像 發(fā)表于 05-11 17:13 ?447次閱讀