日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【IT资讯】华为“鸿蒙”所涉及的微内核究竟是什么

發(fā)布時間:2024/4/21 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【IT资讯】华为“鸿蒙”所涉及的微内核究竟是什么 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 什么是微內(nèi)核
    • 02. 微內(nèi)核的發(fā)展歷史
    • 03. 其他的微內(nèi)核系統(tǒng):Fuchsia,Minix
    • 04. 微內(nèi)核的優(yōu)缺點

01. 什么是微內(nèi)核

微內(nèi)核設(shè)計的基本思想是簡化內(nèi)核功能,在內(nèi)核之外的用戶態(tài)盡可能多地實現(xiàn)系統(tǒng)服務(wù),同時加入相互之間的安全保護(hù)。內(nèi)核只提供最基礎(chǔ)的服務(wù),比如進(jìn)程調(diào)度,進(jìn)程通信(IPC)等。其中進(jìn)程通信是作為連接應(yīng)用與用戶態(tài)系統(tǒng)服務(wù)的橋梁。

上圖左側(cè)表示宏內(nèi)核的架構(gòu),宏內(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)核中。上圖右側(cè)表示即是混合內(nèi)核的架構(gòu)。

其實微內(nèi)核與混合內(nèi)核,混合內(nèi)核與宏內(nèi)核之間并無十分明確的界限,一般情況下把最多只具備IPC(進(jìn)程通信),進(jìn)程調(diào)度,內(nèi)存管理功能的內(nèi)核稱為微內(nèi)核、把包含所有系統(tǒng)服務(wù)的內(nèi)核稱為宏內(nèi)核、有少部分系統(tǒng)服務(wù)在用戶態(tài)或者比微內(nèi)核多一些系統(tǒng)服務(wù)的內(nèi)核稱為混合內(nèi)核。

02. 微內(nèi)核的發(fā)展歷史

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

第一代微內(nèi)核:從無到有

第一代微內(nèi)核的主要代表是Mach,該系統(tǒng)由卡內(nèi)基-梅隆大學(xué)的Avie Tevanian和Richard Rashid主導(dǎo)開發(fā)。在Mach剛剛開始設(shè)計時,UNIX的發(fā)展正如日中天,所以Mach在設(shè)計時的一大目標(biāo)就是兼容UNIX,但是與UNIX不同的是Mach嘗試使用微內(nèi)核架構(gòu)去設(shè)計。Mach以IPC是作為所有系統(tǒng)服務(wù)與內(nèi)核交換數(shù)據(jù)的基礎(chǔ)機(jī)制,充分運用IPC,虛擬內(nèi)存,多進(jìn)程等特性將冗余的系統(tǒng)服務(wù)移出內(nèi)核作為進(jìn)程運行。

1986年,經(jīng)過兩年的開發(fā),第一版的Mach發(fā)布后的第二年,Mach就發(fā)布了第2版,不過由于時間倉促,加之沒有足夠的人手與資金,所以此時Mach內(nèi)核并不提供完全的系統(tǒng)服務(wù)。為了支撐系統(tǒng)上層運行,這一版的內(nèi)核包含了大量4.3版本的BSD系統(tǒng)(UNIX的一個分支)代碼提供系統(tǒng)服務(wù),并且BSD系統(tǒng)服務(wù)運行在內(nèi)核狀態(tài),這導(dǎo)致Mach內(nèi)核的代碼體積甚至大于常規(guī)UNIX內(nèi)核。第一版和第二版的Mach主要做了如下工作:1. 驗證了微內(nèi)核的可行性;2. 在多處理器計算機(jī)上進(jìn)行移植驗證了微內(nèi)核在多處理器計算機(jī)上的運行;3. 最后為了提高IPC的效率,Mach使用共享內(nèi)存機(jī)制來完成IPC。而Mach的共享內(nèi)存機(jī)制是在虛擬內(nèi)存技術(shù)的支持下實現(xiàn)的,只有需要對內(nèi)存進(jìn)行寫入時才進(jìn)行復(fù)制。這么一處理比每次都復(fù)制一遍內(nèi)存節(jié)省了內(nèi)存使用同時又加快了IPC機(jī)制的處理時間,這個改進(jìn)稱為寫時復(fù)制,并且在如今的通用操作系統(tǒng)如Linux中常常用到。

經(jīng)過測試,Mach 2.5的效率最多比UNIX少25%,考慮到Mach帶來的可靠性,可拓展性,安全性,這個損失尚可以接受。當(dāng)然此時Mach內(nèi)核還不算完全的微內(nèi)核。而考慮到微內(nèi)核可以更高效地利用多處理器計算機(jī)的處理器核心資源,人們期待著等Mach把系統(tǒng)服務(wù)都搬到內(nèi)核之外后可以把運行效率損失降下來。同時Mach在微內(nèi)核方面小小的嘗試迅速吸引了大批公司與組織的注意,開放軟件基金會(Open Software Foundation, OSF)宣布下一代系統(tǒng)OSF/1將基于Mach的內(nèi)核, NeXTSTEP也將使用Mach2.5, 甚至IBM也打算利用Mach構(gòu)建Workplace OS。蘋果公司這個時候也出手了,蘋果公司也從此基于Mach2.5打造其操作系統(tǒng)內(nèi)核XNU,XNU的構(gòu)成如下圖所示,Mach作為內(nèi)核的內(nèi)環(huán),外環(huán)右側(cè)是蘋果的驅(qū)動框架(I/O Kit),外環(huán)左側(cè)是BSD的系統(tǒng)服務(wù)代碼提供UNIX兼容的服務(wù)層,這三者共同協(xié)作向上層提供完整的系統(tǒng)服務(wù)。XNU廣泛地使用在蘋果公司的OSX,IOS等系統(tǒng)中。

這個時候由于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)用,即便是多處理器機(jī)器上運行也性能損失慘重,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)核:解決性能問題

第二代微內(nèi)核的主要代表是L3和L4,以及QNX系統(tǒng)使用的Neutrino內(nèi)核。前面第一代的微內(nèi)核Mach由于效率問題雖然失敗了,但是微內(nèi)核的理念并沒有被放棄,德國的計算機(jī)科學(xué)家Jochen Liedtke認(rèn)為Mach的IPC效率低下的原因就是因為IPC部分不夠精簡,于是他開發(fā)了L3和L4微內(nèi)核,對IPC部分進(jìn)行了很徹底的精簡:1. 內(nèi)核的IPC機(jī)制只是單純地傳遞信息,諸如安全權(quán)限檢查這類的代碼都省略掉,省略掉的功能全部由用戶進(jìn)程自己處理。如此一來IPC功能部分的代碼執(zhí)行時間大大縮短;2. IPC不使用內(nèi)存?zhèn)鬟f消息,而使用寄存器傳遞消息,同時限制IPC每次傳遞的信息長度,這樣省去了對內(nèi)存的訪問時間。L4微內(nèi)核的IPC速度經(jīng)過測試要比Mach快20倍,這個令人驚訝的優(yōu)化效果吸引了眾多的目光,使微內(nèi)核的研究重新火熱起來。后面L4內(nèi)核又發(fā)展出了很多相關(guān)系統(tǒng),比如Pistachio,L4/MIPS,與Fiasco等等,這些內(nèi)核組成了L4的大家族。

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

第三代微內(nèi)核:主要重視安全問題等

在前面兩代的基礎(chǔ)上,第三代微內(nèi)核蓬勃發(fā)展,許許多多微內(nèi)核都被開發(fā)出來,主要代表有:seL4, Fiasco.OC, NOVA等。本來第一代微內(nèi)核的設(shè)計隔離了使內(nèi)核安全性降低的系統(tǒng)服務(wù),讓系統(tǒng)服務(wù)漏洞不會影響內(nèi)核,進(jìn)而提高了內(nèi)核安全性,可以說是關(guān)上了破壞系統(tǒng)的門, 但是第二代系統(tǒng)卻又給攻擊者開了個窗戶;由于第二代微內(nèi)核在內(nèi)核中省去了關(guān)于安全性檢查等步驟,把所有關(guān)于安全檢查功能的實現(xiàn)都交給系統(tǒng)服務(wù)自己去實現(xiàn),這導(dǎo)致系統(tǒng)服務(wù)的通信接口直接暴露給用戶態(tài),任何進(jìn)程都可能無限制地請求系統(tǒng)服務(wù),系統(tǒng)服務(wù)不得不花費額外的代價來區(qū)分請求是否合法,容易造成拒絕服務(wù)攻擊。比如正常的文件服務(wù)應(yīng)該是從虛擬文件系統(tǒng)服務(wù)->文件系統(tǒng)服務(wù)->磁盤驅(qū)動服務(wù)這個流程來完成的,但是如果攻擊者如果繞過虛擬文件系統(tǒng)服務(wù),直接無限制地請求攻擊者本身沒有權(quán)限訪問的文件系統(tǒng)服務(wù),使文件系統(tǒng)服務(wù)長期處于滿載狀態(tài),讓其他進(jìn)程無法通過正常的虛擬文件系統(tǒng)得到文件系統(tǒng)服務(wù)。為了增強(qiáng)安全性,且不過分影響性能,人們開始研發(fā)第三代微內(nèi)核。

seL4是在第二代內(nèi)核L4的基礎(chǔ)上發(fā)展而來的。seL4不僅僅繼承了L4內(nèi)核家族的高性能特性,還具備基于端點(enndpoint)的IPC機(jī)制。這種IPC機(jī)制最大的特點是使用了能力空間的概念,進(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)不能繞過能力空間這個機(jī)制對系統(tǒng)服務(wù)造成濫用。

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

03. 其他的微內(nèi)核系統(tǒng):Fuchsia,Minix

Fuchsia是Google開發(fā)的一款全新操作系統(tǒng),試圖覆蓋手機(jī),平板,甚至筆記本等一系列領(lǐng)域。Google為該系統(tǒng)配備了Vulkan圖形接口,3D桌面渲染Scenic,Flutter應(yīng)用開發(fā)框架,還有一個稱為zircon的微內(nèi)核。zircon內(nèi)核是從高通平臺的一個Bootloader項目:Little Kernel發(fā)展而來。zircon內(nèi)核屬于微內(nèi)核設(shè)計,只提供IPC,進(jìn)程管理,地址空間管理功能。zircon區(qū)別于以進(jìn)程或者以文件為核心的設(shè)計,zircon是以內(nèi)存為核心來設(shè)計的,內(nèi)存在zircon中是以對象的方式存在,可以通過channel通信機(jī)制傳遞虛擬內(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ù),中間層提供輪回服務(wù)(Reincarnation Server),這一層運行在內(nèi)核態(tài);文件服務(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)部模塊。

04. 微內(nèi)核的優(yōu)缺點

優(yōu)點

  • 系統(tǒng)服務(wù)模塊化,可移植性高;
  • 內(nèi)核安全性提高(模塊內(nèi)部的bug不影響內(nèi)核穩(wěn)定,將黑客利用軟件漏洞造成的破壞限制在單個模塊內(nèi)部);
  • 可以多套系統(tǒng)服務(wù)共存,相當(dāng)于同時運行多種操作系統(tǒng);
  • 穩(wěn)定統(tǒng)一的接口(可以獨立維護(hù)私有驅(qū)動以及服務(wù),不需要跟內(nèi)核源碼綁定);
  • 在商業(yè)上,微內(nèi)核可以避免代碼受到一些開源協(xié)議的影響,比如GPL協(xié)議。
  • 內(nèi)核精簡,可以進(jìn)行形式化驗正,利用數(shù)學(xué)證明內(nèi)核的安全性;
  • 數(shù)學(xué)可證明的實時性;
  • 非常適合多處理器系統(tǒng)設(shè)計,在多處理器核心計算機(jī)上,互相依賴的系統(tǒng)服務(wù)可以同時運行;

缺點

  • 通過進(jìn)程通信的方式交換數(shù)據(jù)或者調(diào)用系統(tǒng)服務(wù),而不是使用系統(tǒng)調(diào)用,造成額外的操作系統(tǒng)開銷。
  • 使用一些頻繁使用的系統(tǒng)服務(wù)時,比如網(wǎng)絡(luò)收發(fā)數(shù)據(jù),造成的進(jìn)程上下文切換對操作系統(tǒng)來說也是一個負(fù)擔(dān)。
  • 由于系統(tǒng)服務(wù)高度模塊化,系統(tǒng)服務(wù)之間存在大量的內(nèi)存復(fù)制。
  • 對互相之間存在復(fù)雜調(diào)用關(guān)系的系統(tǒng)服務(wù),難以設(shè)計通信接口。
  • 系統(tǒng)服務(wù)與內(nèi)核在地址空間上分離,造成代碼局部性差,降低了cache命中率。

總結(jié)

以上是生活随笔為你收集整理的【IT资讯】华为“鸿蒙”所涉及的微内核究竟是什么的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。