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語言)或跳轉(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),人們開始嘗試使用微內(nè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)求。而后來,為了在宏內(nèi)核與微內(nèi)核之間揚(yáng)長避短,也發(fā)展出了中間的混合內(nèi)核的形態(tài),部分服務(wù)也會(huì)放置于內(nèi)核中。
這個(gè)時(shí)候由于UNIX系統(tǒng)廣泛使用帶來的商業(yè)利益,此時(shí)BSD系統(tǒng)開發(fā)者與UNIX的擁有者AT&T陷入了法律大戰(zhàn),Mach使用的BSD相關(guān)代碼有了法律風(fēng)險(xiǎn)。提升性能的期望和規(guī)避法律風(fēng)險(xiǎn)的需求推動(dòng)著Mach 3.0的開發(fā),Mach 3.0的開發(fā)目標(biāo)主要是為了替換BSD系統(tǒng)服務(wù),同時(shí)盡量多地將系統(tǒng)服務(wù)放到內(nèi)核之外去運(yùn)行,成為名副其實(shí)的微內(nèi)核設(shè)計(jì)。經(jīng)過眾多開發(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等,不過商業(yè)上最成功的則是目前黑莓公司旗下的QNX系統(tǒng)所使用的Neutrino內(nèi)核(QNX,1980年誕生,最初以QUICK UNIX為名,后改為QNX;2004年QNX被Harman國際收購;2010年Harman國際下被黑莓收購,QNX成為黑莓旗下的資產(chǎn)),QNX主要為高可靠領(lǐng)域提供解決方案,比如交通、能源、醫(yī)療、航天航空等。
這個(gè)機(jī)制對(duì)系統(tǒng)服務(wù)造成濫用。
seL4還是第一個(gè)完全通過形式化驗(yàn)證的內(nèi)核,通俗說形式化驗(yàn)證就是在數(shù)學(xué)軟件的幫助下使用數(shù)學(xué)語言自動(dòng)化地推導(dǎo)檢查系統(tǒng)的每一個(gè)運(yùn)行狀態(tài)。
。
Minix系統(tǒng)則由荷蘭阿姆斯特丹的Vrije大學(xué)的Andrew S.Tanenbaum教授所開發(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)核可以避免代碼受到一些開源協(xié)議的影響,比如GPL協(xié)議;
6-內(nèi)核精簡,可以進(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-通過進(jìn)程通信的方式交換數(shù)據(jù)或者調(diào)用系統(tǒng)服務(wù),而不是使用系統(tǒng)調(diào)用,造成額外的操作系統(tǒng)開銷;
2-使用一些頻繁使用的系統(tǒng)服務(wù)時(shí),比如網(wǎng)絡(luò)收發(fā)數(shù)據(jù),造成的進(jìn)程上下文切換對(duì)操作系統(tǒng)來說也是一個(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)核
轉(zhuǎn)載源于:http://jinyejixie.com/news48/101798.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站改版、品牌網(wǎng)站設(shè)計(jì)、建站公司、企業(yè)建站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容