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

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


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

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


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

三代。


這個時候由于UNIX系統(tǒng)廣泛使用帶來的商業(yè)利益,此時BSD系統(tǒng)開發(fā)者與UNIX的擁有者AT&T陷入了法律大戰(zhàn),Mach使用的BSD相關(guān)代碼有了法律風(fēng)險。提升性能的期望和規(guī)避法律風(fēng)險的需求推動著Mach 3.0的開發(fā),Mach 3.0的開發(fā)目標(biāo)主要是為了替換BSD系統(tǒng)服務(wù),同時盡量多地將系統(tǒng)服務(wù)放到內(nèi)核之外去運行,成為名副其實的微內(nèi)核設(shè)計。經(jīng)過眾多開發(fā)者3年的努力,Mach 3.0于1990年發(fā)布,但是由于在系統(tǒng)服務(wù)之間完全使用IPC通信,而不是向宏內(nèi)核那樣直接進(jìn)行函數(shù)調(diào)用,即便是多處理器機器上運行也性能損失慘重,Mach 3.0最多比UNIX損失 67% 運行效率,這導(dǎo)致Mach 3.0以及其所代表的第一代微內(nèi)核設(shè)計被看衰。此后斷斷續(xù)續(xù)有在Mach的基礎(chǔ)上對性能進(jìn)行提升的嘗試,但是均不太理想,至此Mach成為了微內(nèi)核第一代先驅(qū)者。


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



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

這個機制對系統(tǒng)服務(wù)造成濫用。

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

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

。

Minix系統(tǒng)則由荷蘭阿姆斯特丹的Vrije大學(xué)的Andrew S.Tanenbaum教授所開發(fā)。該系統(tǒng)大的特點是可以故障隔離,自動重啟失敗的服務(wù)。Minix使用分層設(shè)計,最底層的微內(nèi)核提供中斷處理、進(jìn)程管理、進(jìn)程通信等服務(wù),這一層運行在內(nèi)核態(tài);中間層提供輪回服務(wù)(Reincarnation Server)、文件服務(wù)、進(jìn)程管理、X圖形服務(wù)以及驅(qū)動等,這一層運行在用戶態(tài);最上層為用戶進(jìn)程。其中輪回服務(wù)負(fù)責(zé)在中間層的服務(wù)出現(xiàn)崩潰時重啟這些服務(wù),從而保證服務(wù)的自我修復(fù)。Minix由于其自我修復(fù)特性被英特爾管理引擎(ME)所選用,該管理引擎主要負(fù)責(zé)管理英特爾芯片的內(nèi)部模塊。


優(yōu)點

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

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

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

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

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

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

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

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


缺點

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

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

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

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

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

本文題目:微內(nèi)核到底是什么?一文帶你認(rèn)識微內(nèi)核
轉(zhuǎn)載源于:http://www.bm7419.com/news48/101798.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司網(wǎng)站改版、品牌網(wǎng)站設(shè)計、建站公司、企業(yè)建站、品牌網(wǎng)站制作

廣告

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

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司