2021-02-19 分類: 網(wǎng)站建設
UNIX以及類UNIX系統(tǒng)如Linux都是典型的宏內(nèi)核設計,也就是把所有系統(tǒng)服務都放到內(nèi)核里,因為系統(tǒng)服務代碼之間存在大量數(shù)據(jù)交換和大量的服務請求,而在同一個代碼段內(nèi)進行函數(shù)調(diào)用(C語言)或跳轉(zhuǎn)(匯編或者機器碼時代)是最直接、高效的方法,在同一片地址空間也方便數(shù)據(jù)交換,所以這樣的宏內(nèi)核設計是很自然的。
但是隨著UNIX內(nèi)核功能的拓展(文件系統(tǒng)、TCP/IP網(wǎng)絡協(xié)議棧、進程管理、內(nèi)存管理、驅(qū)動程序等),UNIX內(nèi)核代碼也相應增加了很多,進而在可維護性.穩(wěn)定性,安全性方面面臨一些挑戰(zhàn)。為了試圖解決這些挑戰(zhàn),人們開始嘗試使用微內(nèi)核的思想來設計系統(tǒng)內(nèi)核。
宏內(nèi)核系統(tǒng)相關的服務基本都是放于內(nèi)核態(tài)內(nèi)核中,例如文件系統(tǒng)、設備驅(qū)動、虛擬內(nèi)存管理、網(wǎng)絡協(xié)議棧等;而微內(nèi)核則把更多的系統(tǒng)服務(例如文件系統(tǒng)、POSIX服務、網(wǎng)絡協(xié)議棧甚至外設驅(qū)動)放到用戶態(tài)應用,形成一個個服務,等待其他應用的請求。而后來,為了在宏內(nèi)核與微內(nèi)核之間揚長避短,也發(fā)展出了中間的混合內(nèi)核的形態(tài),部分服務也會放置于內(nèi)核中。
這個時候由于UNIX系統(tǒng)廣泛使用帶來的商業(yè)利益,此時BSD系統(tǒng)開發(fā)者與UNIX的擁有者AT&T陷入了法律大戰(zhàn),Mach使用的BSD相關代碼有了法律風險。提升性能的期望和規(guī)避法律風險的需求推動著Mach 3.0的開發(fā),Mach 3.0的開發(fā)目標主要是為了替換BSD系統(tǒng)服務,同時盡量多地將系統(tǒng)服務放到內(nèi)核之外去運行,成為名副其實的微內(nèi)核設計。經(jīng)過眾多開發(fā)者3年的努力,Mach 3.0于1990年發(fā)布,但是由于在系統(tǒng)服務之間完全使用IPC通信,而不是向宏內(nèi)核那樣直接進行函數(shù)調(diào)用,即便是多處理器機器上運行也性能損失慘重,Mach 3.0最多比UNIX損失 67% 運行效率,這導致Mach 3.0以及其所代表的第一代微內(nèi)核設計被看衰。此后斷斷續(xù)續(xù)有在Mach的基礎上對性能進行提升的嘗試,但是均不太理想,至此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主要為高可靠領域提供解決方案,比如交通、能源、醫(yī)療、航天航空等。
這個機制對系統(tǒng)服務造成濫用。
seL4還是第一個完全通過形式化驗證的內(nèi)核,通俗說形式化驗證就是在數(shù)學軟件的幫助下使用數(shù)學語言自動化地推導檢查系統(tǒng)的每一個運行狀態(tài)。
。
Minix系統(tǒng)則由荷蘭阿姆斯特丹的Vrije大學的Andrew S.Tanenbaum教授所開發(fā)。該系統(tǒng)大的特點是可以故障隔離,自動重啟失敗的服務。Minix使用分層設計,最底層的微內(nèi)核提供中斷處理、進程管理、進程通信等服務,這一層運行在內(nèi)核態(tài);中間層提供輪回服務(Reincarnation Server)、文件服務、進程管理、X圖形服務以及驅(qū)動等,這一層運行在用戶態(tài);最上層為用戶進程。其中輪回服務負責在中間層的服務出現(xiàn)崩潰時重啟這些服務,從而保證服務的自我修復。Minix由于其自我修復特性被英特爾管理引擎(ME)所選用,該管理引擎主要負責管理英特爾芯片的內(nèi)部模塊。
優(yōu)點
1-系統(tǒng)服務模塊化,可移植性高;
2-內(nèi)核安全性提高(模塊內(nèi)部的bug不影響內(nèi)核穩(wěn)定,將黑客利用軟件漏洞造成的破壞限制在單個模塊內(nèi)部);
3-可以多套系統(tǒng)服務共存,相當于同時運行多種操作系統(tǒng);
4-穩(wěn)定統(tǒng)一的接口(可以獨立維護私有驅(qū)動以及服務,不需要跟內(nèi)核源碼綁定);
5-在商業(yè)上,微內(nèi)核可以避免代碼受到一些開源協(xié)議的影響,比如GPL協(xié)議;
6-內(nèi)核精簡,可以進行形式化驗證,利用數(shù)學證明內(nèi)核的安全性;
7-數(shù)學可證明的實時性;
8-非常適合多處理器系統(tǒng)設計,在多處理器核心計算機上,互相依賴的系統(tǒng)服務可以同時運行;
缺點
1-通過進程通信的方式交換數(shù)據(jù)或者調(diào)用系統(tǒng)服務,而不是使用系統(tǒng)調(diào)用,造成額外的操作系統(tǒng)開銷;
2-使用一些頻繁使用的系統(tǒng)服務時,比如網(wǎng)絡收發(fā)數(shù)據(jù),造成的進程上下文切換對操作系統(tǒng)來說也是一個負擔;
3-由于系統(tǒng)服務高度模塊化,系統(tǒng)服務之間存在大量的內(nèi)存復制;
4-對互相之間存在復雜調(diào)用關系的系統(tǒng)服務,難以設計通信接口;
5-系統(tǒng)服務與內(nèi)核在地址空間上分離,造成代碼局部性差,降低了cache命中率;
本文題目:微內(nèi)核到底是什么?一文帶你認識微內(nèi)核
轉(zhuǎn)載源于:http://aaarwkj.com/news48/101798.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計公司、網(wǎng)站改版、品牌網(wǎng)站設計、建站公司、企業(yè)建站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容