精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是微內核_微內核的發展歷史

h1654155282.3538 ? 來源:陳翠 ? 2019-08-14 17:20 ? 次閱讀

什么是微內核?

微內核設計的基本思想是簡化內核功能,在內核之外的用戶態盡可能多地實現系統服務,同時加入相互之間的安全保護。內核只提供最基礎的服務,比如多進程調度、多進程通信(IPC)等。其中進程通信是作為連接應用與用戶態系統服務的橋梁。

宏內核與微內核的對比示意圖

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

微內核的發展歷史

微內核這個概念從提出開始就在不斷地發展、完善進步之中,到目前為止可以分為三代。

第一代微內核:從無到有

第一代微內核的主要代表是Mach,該系統由美國卡耐基梅隆大學的AvieTevanian和RichardRashid主導開發。在Mach剛剛開始設計時,UNIX的發展正如日中天,所以Mach在設計時的一大目標就是兼容UNIX,但是與UNIX不同的是Mach嘗試使用微內核架構去設計。Mach以IPC是作為所有系統服務與內核交換數據的基礎機制,充分運用IPC、虛擬內存、多進程等特性將冗余的系統服務移出內核作為進程運行。

1986年,經過兩年的開發,第一版的Mach發布后的第二年,Mach就發布了第2版,不過由于時間倉促,加之沒有足夠的人手與資金,所以此時Mach內核并不提供完全的系統服務。

為了支撐系統上層運行,這一版的內核包含了大量4.3版本的BSD系統(UNIX的一個分支)代碼提供系統服務,并且BSD系統服務運行在內核狀態,這導致Mach內核的代碼體積甚至大于常規UNIX內核。

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

1.驗證了微內核的可行性;

2.在多處理器計算機上進行移植驗證了微內核在多處理器計算機上的運行;

3.最后為了提高IPC的效率,Mach使用共享內存機制來完成IPC。

而Mach的共享內存機制是在虛擬內存技術的支持下實現的,只有需要對內存進行寫入時才進行復制。這么一處理比每次都復制一遍內存節省了內存使用同時又加快了IPC機制的處理時間,這個改進稱為寫時復制,并且在如今的通用操作系統如Linux中常常用到。

經過測試,Mach2.5的效率最多比UNIX少25%,但是考慮到Mach帶來的可靠性、可拓展性、安全性,這個效率損失尚可以接受。

當然此時Mach內核還不算完全的微內核。而考慮到微內核可以更高效地利用多處理器計算機的處理器核心資源,人們期待著等Mach把系統服務都搬到內核之外后可以把運行效率損失降下來。

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

這個時候由于UNIX系統廣泛使用帶來的商業利益,此時BSD系統開發者與UNIX的擁有者AT&T陷入了法律大戰,Mach使用的BSD相關代碼有了法律風險。

提升性能的期望和規避法律風險的需求推動著Mach3.0的開發,Mach3.0的開發目標主要是為了替換BSD系統服務,同時盡量多地將系統服務放到內核之外去運行,成為名副其實的微內核設計。

經過眾多開發者3年的努力,Mach3.0于1990年發布,但是由于在系統服務之間完全使用IPC通信,而不是向宏內核那樣直接進行函數調用,即便是多處理器機器上運行也性能損失慘重,Mach3.0最多比UNIX損失67%運行效率,這導致Mach3.0以及其所代表的第一代微內核設計被看衰。此后斷斷續續有在Mach的基礎上對性能進行提升的嘗試,但是均不太理想,至此Mach成為了微內核第一代先驅者。

第二代微內核:解決性能問題

第二代微內核的主要代表是L3和L4,以及QNX系統使用的Neutrino內核。前面第一代的微內核Mach由于效率問題雖然失敗了,但是微內核的理念并沒有被放棄,德國的計算機科學家JochenLiedtke認為Mach的IPC效率低下的原因就是因為IPC部分不夠精簡,于是他開發了L3和L4微內核,對IPC部分進行了很徹底的精簡:

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

2.IPC不使用內存傳遞消息,而使用寄存器傳遞消息,同時限制IPC每次傳遞的信息長度,這樣省去了對內存的訪問時間。L4微內核的IPC速度經過測試要比Mach快20倍,這個令人驚訝的優化效果吸引了眾多的目光,使微內核的研究重新火熱起來。后面L4內核又發展出了很多相關系統,比如Pistachio、L4/MIPS與Fiasco等等,這些內核組成了L4的大家族。

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

第三代微內核:主要重視安全問題等

在前面兩代的基礎上,第三代微內核蓬勃發展,許許多多微內核都被開發出來,主要代表有:seL4、Fiasco.OC、NOVA等。

本來第一代微內核的設計隔離了使內核安全性降低的系統服務,讓系統服務漏洞不會影響內核,進而提高了內核安全性,可以說是關上了破壞系統的門,但是第二代系統卻又給攻擊者開了個窗戶。

由于第二代微內核在內核中省去了關于安全性檢查等步驟,把所有關于安全檢查功能的實現都交給系統服務自己去實現,這導致系統服務的通信接口直接暴露給用戶態,任何進程都可能無限制地請求系統服務,系統服務不得不花費額外的代價來區分請求是否合法,容易造成拒絕服務攻擊。

比如正常的文件服務應該是從虛擬文件系統服務-》文件系統服務-》磁盤驅動服務這個流程來完成的,但是如果攻擊者如果繞過虛擬文件系統服務,直接無限制地請求攻擊者本身沒有權限訪問的文件系統服務,使文件系統服務長期處于滿載狀態,讓其他進程無法通過正常的虛擬文件系統得到文件系統服務。為了增強安全性,且不過分影響性能,人們開始研發第三代微內核。

seL4是在第二代內核L4的基礎上發展而來的。seL4不僅僅繼承了L4內核家族的高性能特性,還具備基于端點(enndpoint)的IPC機制。

這種IPC機制最大的特點是使用了能力空間的概念,進程在使用IPC請求系統服務時必須具備相對應的能力,進程持有不可偽造的令牌來表示擁有請求某種服務的能力。令牌可以被復制,可以被轉移,還可以通過IPC進行傳輸。令牌其實是一個指向存在于內核空間內核對象的指針,所以普通進程并不能修改自身以及其他進程的權限分配,但是內核可以對令牌指定的權限進行控制,從而保證了用戶態不能繞過能力空間這個機制對系統服務造成濫用。

seL4還是第一個完全通過形式化驗證的內核,通俗說形式化驗證就是在數學軟件的幫助下使用數學語言自動化地推導檢查系統的每一個運行狀態。seL4形式化驗證相關論文。

其他的微內核系統:Fuchsia、Minix

Fuchsia是Google開發的一款全新操作系統,試圖覆蓋手機、平板甚至筆記本等一系列領域。Google為該系統配備了Vulkan圖形接口、3D桌面渲染Scenic、Flutter應用開發框架,還有一個稱為zircon的微內核。

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

Minix系統則由荷蘭阿姆斯特丹的Vrije大學的AndrewS.Tanenbaum教授所開發。

該系統最大的特點是可以故障隔離,自動重啟失敗的服務。

Minix使用分層設計,最底層的微內核提供中斷處理、進程管理、進程通信等服務,這一層運行在內核態;中間層提供輪回服務(ReincarnationServer)、文件服務、進程管理、X圖形服務以及驅動等,這一層運行在用戶態,最上層為用戶進程。

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微內核架構
    +關注

    關注

    0

    文章

    5

    瀏覽量

    6528
  • 微內核
    +關注

    關注

    0

    文章

    57

    瀏覽量

    13402
收藏 人收藏

    評論

    相關推薦

    RTOS的實時內核內核解析

    使得CPU的利用更為有效。 需要指出的是,實時內核并不等于實時操作系統,實時內核只是實時操作系統的一部分。 內核是整個操作系統的基礎,實時內核同樣是實時操作系統的基礎,目前很多實時
    發表于 02-19 06:36

    內核什么時候發布?內核有何優勢?

    想了解下內核什么時候發布的?內核有何優勢?
    發表于 10-10 10:09

    什么是內核

    什么是內核?內核發展歷史
    發表于 03-07 06:36

    windows內核的相關資料推薦

    Linux 是宏內核或者單內核,windows是內核,最大的區別是所有的內核功能都被整體編譯在一起,形成一個單獨的
    發表于 12-16 07:52

    內核與大內核的相關資料下載

    內核與大內核是操作系統設計中的兩種不同的思想,這與 CPU 的設計中 RISC 和 CISC 構架類似。其中,內核的思想是,把盡量少的操
    發表于 12-20 07:11

    華為“鴻蒙”所涉及的內核到底是什么?

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

    內核的優缺點

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

    淺談鴻蒙操作系統的內核

    華為在松山湖的華為開發者大會上正式宣布了鴻蒙操作系統,該系統其中一個亮點是 內核。華為聲稱,內核的啟用,使其速度大大提升,并且在安全性上產生變革性突破,
    的頭像 發表于 10-13 12:36 ?6033次閱讀

    怎么使用CMake編譯RTT內核

    已經大半個月沒有更新文章了,大家還記得之前作者寫的一篇關于RT-Thread的內核移植的文章嗎?如果不記得沒關系??慈缦率俏恼骆溄印?/div>
    的頭像 發表于 12-14 22:33 ?537次閱讀

    內核與宏內核的比較與分析

    混合內核實質上也是內核,而外內核是一種比較極端的設計方法,目前還處于研究階段,所以我們就著重討論宏內核
    發表于 03-17 16:05 ?11次下載
    <b class='flag-5'>微</b><b class='flag-5'>內核</b>與宏<b class='flag-5'>內核</b>的比較與分析

    L4內核技術淺析

    L4內核技術淺析說明。
    發表于 04-07 14:22 ?20次下載
    L4<b class='flag-5'>微</b><b class='flag-5'>內核</b>技術淺析

    10個關于內核的問題

    如果有個一個不得不用內核的理由,那一定是安全。實時上疫情這幾年,汽車和云的實踐表明,內核幾乎肯定會應用加速。我們提煉了10個關于
    的頭像 發表于 12-13 09:55 ?662次閱讀

    zircon內核啟動代碼分析

    Zircon內核的代碼是用C++寫的,C++和C的基礎語法差不多,C++新加入了一些面向對象的東西
    的頭像 發表于 06-11 09:14 ?2438次閱讀
    zircon<b class='flag-5'>微</b><b class='flag-5'>內核</b>啟動代碼分析

    鴻蒙使用的是內核?

    我們常說,看一個系統是不是自研,就看它的內核,常見的內核分為:宏內核內核,當然還有兩者結合體,他們到底有什么區別? 白話宏
    的頭像 發表于 01-30 16:43 ?350次閱讀
    鴻蒙使用的是<b class='flag-5'>微</b><b class='flag-5'>內核</b>?

    內核實時操作系統的介紹

    內核實時操作系統(Microkernel Real-Time Operating System, μRTOS)是一種專為實時設計的操作系統。它采用內核架構,以提高系統的可靠性、安全
    的頭像 發表于 05-11 17:13 ?360次閱讀