微內(nèi)核到底是什么?一文帶你認(rèn)識(shí)微內(nèi)核

2021-02-19    分類: 網(wǎng)站建設(shè)


UNIX以及類UNIX系統(tǒng)如Linux都是典型的宏內(nèi)核設(shè)計(jì),也就是把所有系統(tǒng)服務(wù)都放到內(nèi)核里,因?yàn)橄到y(tǒng)服務(wù)代碼之間存在大量數(shù)據(jù)交換和大量的服務(wù)請(qǐng)求,而在同一個(gè)代碼段內(nèi)進(jìn)行函數(shù)調(diào)用(C語(yǔ)言)或跳轉(zhuǎn)(匯編或者機(jī)器碼時(shí)代)是最直接、高效的方法,在同一片地址空間也方便數(shù)據(jù)交換,所以這樣的宏內(nèi)核設(shè)計(jì)是很自然的。

但是隨著UNIX內(nèi)核功能的拓展(文件系統(tǒng)、TCP/IP網(wǎng)絡(luò)協(xié)議棧、進(jìn)程管理、內(nèi)存管理、驅(qū)動(dòng)程序等),UNIX內(nèi)核代碼也相應(yīng)增加了很多,進(jìn)而在可維護(hù)性.穩(wěn)定性,安全性方面面臨一些挑戰(zhàn)。為了試圖解決這些挑戰(zhàn),人們開(kāi)始嘗試使用微內(nèi)核的思想來(lái)設(shè)計(jì)系統(tǒng)內(nèi)核。


宏內(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)核中。

三代。


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


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



空間的概念,進(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)。

空間管理功能。zircon區(qū)別于以進(jìn)程或者以文件為核心的設(shè)計(jì),zircon是以內(nèi)存為核心來(lái)設(shè)計(jì)的,內(nèi)存在zircon中是以對(duì)象的方式存在,可以通過(guò)channel通信機(jī)制傳遞虛擬內(nèi)存對(duì)象(Virtual memory object)的句柄,進(jìn)程拿到句柄后可以把這塊內(nèi)存映射到自己的空間

。

Minix系統(tǒng)則由荷蘭阿姆斯特丹的Vrije大學(xué)的Andrew S.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ù)(Reincarnation Server)、文件服務(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)部模塊。


優(yōu)點(diǎn)

1-系統(tǒng)服務(wù)模塊化,可移植性高;

2-內(nèi)核安全性提高(模塊內(nèi)部的bug不影響內(nèi)核穩(wěn)定,將黑客利用軟件漏洞造成的破壞限制在單個(gè)模塊內(nèi)部);

3-可以多套系統(tǒng)服務(wù)共存,相當(dāng)于同時(shí)運(yùn)行多種操作系統(tǒng);

4-穩(wěn)定統(tǒng)一的接口(可以獨(dú)立維護(hù)私有驅(qū)動(dòng)以及服務(wù),不需要跟內(nèi)核源碼綁定);

5-在商業(yè)上,微內(nèi)核可以避免代碼受到一些開(kāi)源協(xié)議的影響,比如GPL協(xié)議;

6-內(nèi)核精簡(jiǎn),可以進(jìn)行形式化驗(yàn)證,利用數(shù)學(xué)證明內(nèi)核的安全性;

7-數(shù)學(xué)可證明的實(shí)時(shí)性;

8-非常適合多處理器系統(tǒng)設(shè)計(jì),在多處理器核心計(jì)算機(jī)上,互相依賴的系統(tǒng)服務(wù)可以同時(shí)運(yùn)行;


缺點(diǎn)

1-通過(guò)進(jìn)程通信的方式交換數(shù)據(jù)或者調(diào)用系統(tǒng)服務(wù),而不是使用系統(tǒng)調(diào)用,造成額外的操作系統(tǒng)開(kāi)銷;

2-使用一些頻繁使用的系統(tǒng)服務(wù)時(shí),比如網(wǎng)絡(luò)收發(fā)數(shù)據(jù),造成的進(jìn)程上下文切換對(duì)操作系統(tǒng)來(lái)說(shuō)也是一個(gè)負(fù)擔(dān);

3-由于系統(tǒng)服務(wù)高度模塊化,系統(tǒng)服務(wù)之間存在大量的內(nèi)存復(fù)制;

4-對(duì)互相之間存在復(fù)雜調(diào)用關(guān)系的系統(tǒng)服務(wù),難以設(shè)計(jì)通信接口;

5-系統(tǒng)服務(wù)與內(nèi)核在地址空間上分離,造成代碼局部性差,降低了cache命中率;

文章名稱:微內(nèi)核到底是什么?一文帶你認(rèn)識(shí)微內(nèi)核
分享鏈接:http://muchs.cn/news/101798.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、關(guān)鍵詞優(yōu)化、網(wǎng)站導(dǎo)航、網(wǎng)站維護(hù)、品牌網(wǎng)站設(shè)計(jì)、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站