微內(nèi)核操作系統(tǒng)的發(fā)展與關(guān)鍵技術(shù)解析_第1頁
微內(nèi)核操作系統(tǒng)的發(fā)展與關(guān)鍵技術(shù)解析_第2頁
微內(nèi)核操作系統(tǒng)的發(fā)展與關(guān)鍵技術(shù)解析_第3頁
微內(nèi)核操作系統(tǒng)的發(fā)展與關(guān)鍵技術(shù)解析_第4頁
微內(nèi)核操作系統(tǒng)的發(fā)展與關(guān)鍵技術(shù)解析_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

導(dǎo)讀:工業(yè)物聯(lián)網(wǎng)領(lǐng)域的設(shè)備具有配置多樣的硬件環(huán)境特點(diǎn),這種“碎片化”的特征催生了對應(yīng)操作系統(tǒng)很強(qiáng)的伸縮性需求,以實現(xiàn)不同底層硬件和功能部件進(jìn)行抽象,對上層提供統(tǒng)一的編程接口,為工業(yè)物聯(lián)網(wǎng)打造良好生態(tài)環(huán)境提供基礎(chǔ)。本文針對工業(yè)物聯(lián)網(wǎng)操作系統(tǒng)的特征要求,對最適合的微內(nèi)核操作系統(tǒng)的技術(shù)發(fā)展進(jìn)行了深入調(diào)研,并對其中涉及的如任務(wù)實時調(diào)度、進(jìn)程間高效通信、高效安全的內(nèi)存管理、信息安全等關(guān)鍵技術(shù)進(jìn)行了深入剖析。

1引言

工業(yè)物聯(lián)網(wǎng)系統(tǒng)中適配的操作系統(tǒng)特殊的使用場景決定了其除具備傳統(tǒng)操作系統(tǒng)的設(shè)備資源管理功能外,還具備下列功能:屏蔽工業(yè)物聯(lián)網(wǎng)碎片化的特征,提供統(tǒng)一的編程接口;工業(yè)物聯(lián)網(wǎng)生態(tài)環(huán)境培育;降低工業(yè)物聯(lián)網(wǎng)應(yīng)用開發(fā)的成本和時間;為工業(yè)物聯(lián)網(wǎng)統(tǒng)一管理奠定基礎(chǔ)。由此可見,工業(yè)物聯(lián)網(wǎng)操作系統(tǒng)對實現(xiàn)智能制造、智能工廠等當(dāng)前熱門領(lǐng)域均起著至關(guān)重要的作用。對工業(yè)物聯(lián)網(wǎng)操作的技術(shù)要求包括:內(nèi)核尺寸伸縮性強(qiáng),能適應(yīng)不同配置的硬件平臺;內(nèi)核實時性強(qiáng),以滿足關(guān)鍵應(yīng)用的需要;內(nèi)核架構(gòu)可擴(kuò)展性強(qiáng),且足夠安全和可靠;操作系統(tǒng)核心、設(shè)備驅(qū)動程序或應(yīng)用程序均可遠(yuǎn)程升級;支持文件系統(tǒng)和外部存儲;支持遠(yuǎn)程配置、遠(yuǎn)程管理等維護(hù)功能;支持完善的網(wǎng)絡(luò)功能等。而微內(nèi)核架構(gòu)的操作系統(tǒng)可完全滿足上述應(yīng)用需求,故本文針對微內(nèi)核操作系統(tǒng)的技術(shù)發(fā)展及關(guān)鍵技術(shù)進(jìn)行深入研究。2微內(nèi)核操作系統(tǒng)技術(shù)發(fā)展

2.1傳統(tǒng)操作系統(tǒng)介紹目前常見的EMOS(嵌入式操作系統(tǒng))有幾十種,但很多數(shù)是在物聯(lián)網(wǎng)興起之前就有,隨著物聯(lián)網(wǎng)概念的提升,這些操作系統(tǒng)都宣稱加入了物聯(lián)網(wǎng)特性的支持,而專門針對物聯(lián)網(wǎng)全新研發(fā)的嵌入式操作系統(tǒng)還是剛剛起步。目前主流的嵌入式實時操作系有:Linux及實時性或輕量化的變種、uCOS-II、FreeRTOS、eCos、VxWorks、Nucleus、ThreadX、QNX等。它們主要特點(diǎn)是面向控制、通信等領(lǐng)域的實時性,輕量化,可定制裁剪,部分安全。但很少有一個操作系統(tǒng)同時擁有上述所有特點(diǎn),比如具有強(qiáng)實時性的,可能安全性上有所減弱;具有安全特性的,可能在性能上做出犧牲等。如今幾乎所有的操作系統(tǒng)都聲稱有一些物聯(lián)網(wǎng)連接功能,現(xiàn)有的操作系統(tǒng)大多數(shù)符合下列屬性:使用內(nèi)存少、電源效率高、模塊化可配置通信堆棧,對特定的無線和傳感器技術(shù)提供強(qiáng)有力的支持。一些項目注重物聯(lián)網(wǎng)安全,許多非Linux操作項目專注于實時確定性(Real-timeDeterminism),這也是工業(yè)物聯(lián)網(wǎng)的一個要求。2.2微內(nèi)核操作系統(tǒng)的發(fā)展歷程內(nèi)核按照軟件架構(gòu)可以分為微內(nèi)核(Microkernel)和宏內(nèi)核(Monolithickernel)兩種概念。微內(nèi)核結(jié)構(gòu)是由一個非常簡單的硬件抽象層和一組比較關(guān)鍵的原語或系統(tǒng)調(diào)用組成。這些原語,僅僅包括了建立一個系統(tǒng)必需的幾個部分,如線程管理、地址空間和進(jìn)程間通信等。微內(nèi)核的目標(biāo)是將系統(tǒng)服務(wù)的實現(xiàn)和系統(tǒng)的基本操作規(guī)則分離開來。例如,進(jìn)程的輸入/輸出鎖定服務(wù)可以由運(yùn)行在微內(nèi)核之外的一個服務(wù)組件來提供。這些非常模塊化的用戶態(tài)服務(wù)器用于完成操作系統(tǒng)中比較高級的操作,使最內(nèi)核部分的設(shè)計更簡單。一個服務(wù)組件的失效并不會導(dǎo)致整個系統(tǒng)的崩潰,內(nèi)核需要做的,僅僅是重新啟動這個組件,而不必影響其它的部分。微內(nèi)核將許多OS服務(wù)放入分離的進(jìn)程,如文件系統(tǒng)、設(shè)備驅(qū)動程序,而進(jìn)程通過消息傳遞調(diào)用OS服務(wù)。宏內(nèi)核架構(gòu)的特性是整個內(nèi)核程序都是以內(nèi)核空間(KernelSpace)的身份及監(jiān)管者模式(SupervisorMode)來運(yùn)行。相對于其它類型的操作系統(tǒng)架構(gòu),如微內(nèi)核架構(gòu)或混內(nèi)核架構(gòu)等,會附加一些后臺服務(wù)以及系統(tǒng)調(diào)用,通過這種方式來實現(xiàn)各種操作系統(tǒng)服務(wù),如進(jìn)程管理、共時(Concurrency)控制、存儲器管理等。即使有的宏內(nèi)核將其運(yùn)作從整體性運(yùn)作拆分成幾個服務(wù)模塊,并讓各模塊各自運(yùn)作,其操作系統(tǒng)的代碼依然是高度緊密的,很難修改成其他類型的操作系統(tǒng)架構(gòu)。此外,所有的模塊也都在同一塊定址空間內(nèi)運(yùn)行,倘若某個模塊有錯誤,運(yùn)行時就會損及整個操作系統(tǒng)運(yùn)行。Linux就是比較典型的宏內(nèi)核操作系統(tǒng)。輕量化、可裁剪,適用于工業(yè)現(xiàn)場的穩(wěn)定性和安全性等指標(biāo),意味著微內(nèi)核架構(gòu)是個不錯的選擇。在微內(nèi)核剛興起時,學(xué)術(shù)界普遍認(rèn)為其優(yōu)點(diǎn)是顯而易見的:(1)支持更加模塊化的設(shè)計;(2)小的內(nèi)核更易于更新與維護(hù),bug會更少。正如大家知道Windows的死機(jī)很多是由DeviceDrivers造成的。如果把它們移出內(nèi)核,它們中的bug很可能就不會造成死機(jī);(3)許多模塊的bug可被封閉在其模塊內(nèi),更加易于調(diào)試。如果文件系統(tǒng)、內(nèi)存管理和設(shè)備驅(qū)動成為一個個獨(dú)立的進(jìn)程,則會讓Kernel維護(hù)更加高效,也十分有利于縮短整個操作系統(tǒng)的研發(fā)時間?;谏鲜鲈?,很多學(xué)術(shù)研究人員和軟件廠家開始嘗試使用微內(nèi)核的概念設(shè)計操作系統(tǒng)。第一代微內(nèi)核操作系統(tǒng)的代表作品是Mach,由卡內(nèi)基梅隆大學(xué)(CMU)設(shè)計,Mach發(fā)布了2個版本,主要完成了以下工作:從概念上驗證了微內(nèi)核技術(shù)的可行性;在多處理器計算機(jī)上進(jìn)行移植驗證了微內(nèi)核在多處理器計算機(jī)上的運(yùn)行;使用共享內(nèi)存機(jī)制完成進(jìn)程間通信(InterProcessCommunication,IPC),從而提高了IPC的效率。后期甚至微軟也有所動作,在設(shè)計WindowsNT時,他們把UI(UserInterface)從Windowskernel中整個拿了出來。但是這一熱潮很快就冷了下來,原因就是性能問題。微軟在WindowsNT后續(xù)版本中,又把部分底層UI放回了Windowskernel。正如在Java剛開始流行時,由于其具有許多C/C++沒有的優(yōu)點(diǎn),很多人認(rèn)為它會很快取代C/C++成為第一編程語言。但直至今天也沒有發(fā)生,其中一個重要原因就是Java程序的性能落后于C程序,至今還限制著它在許多場合的應(yīng)用。第一代的微內(nèi)核操作系統(tǒng)的性能,包括Mach在內(nèi),遠(yuǎn)不及宏內(nèi)核操作系統(tǒng)。所以大多數(shù)人又回到傳統(tǒng)技術(shù)中去了。但在九十年代后期,微內(nèi)核迎來了其生命中的第二春。一些研究人員認(rèn)真分析了微內(nèi)核系統(tǒng)性能差的原因,指出其性能差并非由根本內(nèi)在的因素造成,而是設(shè)計實現(xiàn)的失誤。為證明其論點(diǎn),他們設(shè)計并實現(xiàn)了幾個性能遠(yuǎn)超第一代的微內(nèi)核操作系統(tǒng),我們把它們稱為第二代微內(nèi)核系統(tǒng)。其中的一個代表作品就是德國計算科學(xué)家JochenLiedtke設(shè)計的L4。L4不再是傳統(tǒng)Unix操作系統(tǒng)的簡單重構(gòu),而是一種全新的設(shè)計。L4微內(nèi)核高性能的關(guān)鍵就是使用了同步IPC技術(shù),并且使用寄存器傳遞消息,而不是內(nèi)存拷貝?;贚4微內(nèi)核,JochenLiedtke提出了一種構(gòu)建服務(wù)器模式操作系統(tǒng)的方法,整個系統(tǒng)服務(wù)由一系列服務(wù)器組成,比如內(nèi)存管理服務(wù)器、文件系統(tǒng)服務(wù)器等,每個服務(wù)器在對外提供服務(wù)的同時也可以調(diào)用其他服務(wù)器提供的服務(wù)。由于第二代微內(nèi)核設(shè)計為了追求高性能,線程ID是一種全局共享靜態(tài)資源,任何任務(wù)中的線程都可以通過線程ID向其他服務(wù)器線程發(fā)起服務(wù)請求,造成了安全上的隱患。第三代微內(nèi)核應(yīng)運(yùn)而生,引入了Capability機(jī)制。任何操作系統(tǒng)內(nèi)核對象,比如線程、中斷和內(nèi)存等,都不能直接進(jìn)行操作,而是通過一種類似對象引用的機(jī)制即Capability進(jìn)行調(diào)用。目前,比較經(jīng)典支持Capability機(jī)制的第三代微內(nèi)核seL4。seL4是在第二代微內(nèi)核L4基礎(chǔ)上發(fā)展而來,因而其不僅繼承了L4微內(nèi)核高性能的優(yōu)點(diǎn),還具備基于斷點(diǎn)的IPC機(jī)制。這種機(jī)制最大的特點(diǎn)就是使用了能力空間的概念,進(jìn)程在使用IPC請求系統(tǒng)服務(wù)時必須具備相對應(yīng)的能力,并持有不可偽造的令牌來表示擁有請求某種服務(wù)的能力。令牌可以被復(fù)制,可以被轉(zhuǎn)移,還可以通過IPC進(jìn)行傳輸。seL4是一個操作系統(tǒng)微內(nèi)核,也就是說,seL4本身不是一個完整的操作系統(tǒng),它提供很有限的API,沒有提供像傳統(tǒng)的操作系統(tǒng)Linux那樣的內(nèi)存管理、頁內(nèi)外交換、驅(qū)動程序等。seL4微內(nèi)核設(shè)計針對實時應(yīng)用,可潛在應(yīng)用于強(qiáng)調(diào)安全和關(guān)鍵性任務(wù)的領(lǐng)域內(nèi),如軍用和醫(yī)療行業(yè)。研究發(fā)現(xiàn)常用的攻擊方法對seL4無效,如惡意程序經(jīng)常采用的緩存溢出漏洞。正因為微內(nèi)核原生的諸多優(yōu)勢,目前其內(nèi)核架構(gòu)越來越被人們重視,被認(rèn)為其是一種面對未來的操作系統(tǒng)架構(gòu)?;ヂ?lián)網(wǎng)巨頭公司,同時也是操作系統(tǒng)研發(fā)的龍頭公司Google,在其以Linux宏內(nèi)核為操作系統(tǒng)內(nèi)核開發(fā)的Android操作系統(tǒng)成功以后,它已經(jīng)在積極地開發(fā)全新內(nèi)核的操作系統(tǒng)fuchsia,這一操作系統(tǒng)將不再是Linux宏內(nèi)核系統(tǒng)的衍生版,而是真正意義上的微內(nèi)核操作系統(tǒng)。并且,它將是一款基于權(quán)能安全機(jī)制的操作系統(tǒng)。無獨(dú)有偶,國內(nèi)通信巨頭華為公司,在完成自主研發(fā)的處理器芯片麒麟系列以后,其自主研發(fā)的微內(nèi)核架構(gòu)操作系統(tǒng)鴻蒙系統(tǒng)也正式推向市場。從全球性公司研發(fā)目標(biāo)中可以看到,微內(nèi)核是被當(dāng)代各大全球性公司認(rèn)可的內(nèi)核架構(gòu),也是未來非常有前景的一種內(nèi)核架構(gòu),其發(fā)展將會越來越標(biāo)準(zhǔn)化。而且,據(jù)稱無論是fuchsia系統(tǒng)還是鴻蒙系統(tǒng)都將會大大發(fā)揮微內(nèi)核中內(nèi)核服務(wù)分離的優(yōu)勢,它將在多種平臺上運(yùn)行,包括智能手機(jī)的嵌入式設(shè)備和個人PC,并且還將兼容Android系統(tǒng)上的各種應(yīng)用。這種高分離性是微內(nèi)核架構(gòu)的優(yōu)勢,同時也是宏內(nèi)核架構(gòu)為何始終無法將PC和智能移動終端進(jìn)行統(tǒng)一的一大原因。從宏內(nèi)核UNIX發(fā)展的起點(diǎn)——標(biāo)準(zhǔn)化和輕便型,到Google最終選擇摒棄宏內(nèi)核而使用微內(nèi)核來開發(fā)下一代全新操作系統(tǒng),不難看出,微內(nèi)核的思想是非常符合包括工業(yè)物聯(lián)網(wǎng)在內(nèi)的未來社會發(fā)展的需要。在未來,微內(nèi)核發(fā)展有望開發(fā)出顛覆傳統(tǒng)操作系統(tǒng)環(huán)境,將PC、移動智能終端以及嵌入式設(shè)備進(jìn)行統(tǒng)一的,具有跨時代意義的微內(nèi)核操作系統(tǒng)。3微內(nèi)核操作系統(tǒng)關(guān)鍵技術(shù)解析

3.1實時任務(wù)調(diào)度技術(shù)為了滿足工業(yè)物聯(lián)網(wǎng)產(chǎn)品應(yīng)用需求,該微內(nèi)核操作系統(tǒng)支持兩種任務(wù)調(diào)度策略:基于優(yōu)先級的搶占式調(diào)度策略、時間片輪轉(zhuǎn)策略,并支持多級優(yōu)先級配置。應(yīng)用任務(wù)可以通過接口創(chuàng)建另一個任務(wù),并設(shè)置該任務(wù)的優(yōu)先級。出于安全性考慮,當(dāng)一個任務(wù)創(chuàng)建另外一個任務(wù)時,只能把另外一個任務(wù)優(yōu)先級設(shè)置不高于該任務(wù),即任務(wù)不能創(chuàng)建比自己優(yōu)先級還高的子任務(wù)?;趦?yōu)先級的搶占式調(diào)度策略采用基于位圖的調(diào)度算法,該調(diào)度算法將每個任務(wù)的優(yōu)先級映射到了一個調(diào)度的二維表,該二維表用32個字節(jié)表示,每個字節(jié)8位,一共256位,共代表256個優(yōu)先級,如圖1所示。圖1微內(nèi)核操作系統(tǒng)任務(wù)優(yōu)先級示意圖將操作系統(tǒng)所有處于Ready狀態(tài)的任務(wù)按照上述關(guān)系映射到該優(yōu)先級位圖中。操作系統(tǒng)在每次進(jìn)行任務(wù)(假定其優(yōu)先級為prio)調(diào)度時,首先從位圖中選擇出優(yōu)先級最高的任務(wù),選擇過程通過上圖中的ScheduleRdyGrp映射優(yōu)先級最高組Y,然后通過ScheduleRdyBitMap進(jìn)行映射確定在Y組中X列中的最高優(yōu)先級。任務(wù)就緒時需要計算其對應(yīng)的ScheduleRdyGrp和ScheduleRdyTbl[n]值,其具體算法為:上面所述的X、Y映射關(guān)系表OSPriHighMap,偽代碼如圖2所示。圖2微內(nèi)核操作系統(tǒng)基于位圖的優(yōu)先級映射關(guān)系這樣無論系統(tǒng)負(fù)載高低,都能夠使系統(tǒng)任務(wù)調(diào)度切換時間復(fù)雜度相同,從而提高系統(tǒng)調(diào)度的確定性。查詢?nèi)蝿?wù)就緒態(tài)下的優(yōu)先級可以最終抽象為如下表示。對于相同優(yōu)先級的任務(wù)進(jìn)行采用輪轉(zhuǎn)調(diào)度算法,每個優(yōu)先級任務(wù)對應(yīng)一組任務(wù)隊列,依次進(jìn)行輪轉(zhuǎn)調(diào)度。3.2進(jìn)程間高效IPC通信技術(shù)為了解決進(jìn)程間通信效率問題,微內(nèi)核操作系統(tǒng)設(shè)計了一種基于用戶空間共享內(nèi)存的進(jìn)程間通信機(jī)制,該機(jī)制采用進(jìn)程間內(nèi)存授權(quán)管理的方法,建立了高效的消息隊列、事件、信號量通信機(jī)制。通過該技術(shù)的應(yīng)用,能夠有效避免進(jìn)程通信過程中內(nèi)核空間與用戶空間切換頻繁問題,并提升進(jìn)程間通信安全性。seL4微內(nèi)核提供了線程間傳遞消息的機(jī)制,這個機(jī)制也用來傳遞用戶程序與內(nèi)核提供的服務(wù)之間的通信。消息被傳送到同步或異步IPC端點(diǎn),這些端點(diǎn)由其它線程約定,其它消息類型由內(nèi)核約定。每個消息包含一些消息字,還可以包含一些句柄。消息的傳遞是盡量通過通用寄存器來完成,但是硬件平臺的通用寄存器的數(shù)量是十分有限的,在寄存器放不下的就要放到被稱為IPC緩存(IPCbuffer)的內(nèi)存中,每個線程控制塊有一個IPC通信用的緩存區(qū)buffer,用來在IPC或內(nèi)核對象調(diào)用時傳遞額外的參數(shù),所謂額外的參數(shù),即無法存儲在寄存器里的數(shù)據(jù),不同的平臺可以使用的寄存器不同,所以這個定義與平臺相關(guān)。每個IPC消息包含一個標(biāo)識,其數(shù)據(jù)結(jié)構(gòu)包含標(biāo)簽label、消息長度length、句柄數(shù)量extraCaps、接收句柄capsUnwrapped等4個字段。消息的長度和句柄的數(shù)量決定了消息寄存器的使用及發(fā)送線程想要傳遞的句柄的數(shù)量。內(nèi)核不解釋label字段。label字段只是被當(dāng)作消息的第一個數(shù)據(jù)被傳送。用戶程序可以對label字段進(jìn)行自定義。capsUnwrapped字段只被接收方使用,用來指明哪個句柄被接收。同步端點(diǎn)允許少量的數(shù)據(jù)及句柄在線程間同步傳遞。所謂同步,即信息發(fā)出去后發(fā)送者要等待應(yīng)答。如果發(fā)送者不是要發(fā)送的狀態(tài),而且接收者正好處于接收狀態(tài),這個消息就不被傳遞。如果發(fā)出IPC同步請求,沒有接收者準(zhǔn)備好,則阻塞,排隊等待,直到有接收者,則消息發(fā)送給第一個準(zhǔn)備好了的接收者。如果發(fā)出等待請求給內(nèi)核,但沒有線程向它發(fā)消息,則阻塞并排隊等待請求,直到有發(fā)送者,就接收第一個發(fā)送者的消息。同步消息中可以有句柄,消息中的句柄必須有Grant權(quán)限,沒有Grant權(quán)限的句柄,不會隨消息的傳遞而傳遞。句柄存在于消息的caps字段,caps中的每一項被當(dāng)作CPTR解釋為線程句柄空間中的一個句柄。消息中句柄的數(shù)量存于消息標(biāo)記(messagetag)中的extraCaps字段中?;镜腎PC概念是端點(diǎn)(EndPoint)之間的任務(wù)。端點(diǎn)是一個內(nèi)核對象,其中包含了一個線程隊列和一個狀態(tài)(state)標(biāo)志,該標(biāo)志用來記錄隊列中的線程是處于要發(fā)送(Send)消息的狀態(tài),還是處于等待接收消息(Wait)的狀態(tài)。它扮演了一個“一個或多個發(fā)送者”與“一個或多個接收者”之間單向通信的作用。這個全局的標(biāo)識符是不暴露給參與IPC的各方的,無論是發(fā)送者,還是接收者,都是使用一個本地端點(diǎn)地址來工作。一個端點(diǎn)上,可能有多個線程用來發(fā)送或接收消息。當(dāng)一個線程對調(diào)用端點(diǎn)發(fā)送與接收消息時,內(nèi)核將扮演在它們之間傳遞消息的角色。沒有伙伴的線程,即僅有發(fā)送任務(wù)無接收任務(wù),或僅有接收任務(wù)無發(fā)送任務(wù),將被掛起(suspend),算法中并未規(guī)定,哪些線程首先被喚醒(resume),一般是先進(jìn)先出(FIFO)。異步端點(diǎn)(AsynchronousEndPoint,AsyncEP)允許非阻塞異步發(fā)送消息,但異步消息中不能有句柄。因為同一時間一個端點(diǎn)(EndPoint)只能接收一個消息,而一個服務(wù)者希望為N個客戶端提供服務(wù),于是每個客戶端都拿到了這個端點(diǎn)的一個引用,內(nèi)核提供了一個標(biāo)記(badge)的辦法,有標(biāo)記的句柄就是標(biāo)記句柄(badgedendpointcapability)。每個標(biāo)記由產(chǎn)生它的服務(wù)線程(Server)定義,因為這個句柄就是服務(wù)線程通過CNode_Mint()之類的手段得到的。在一些應(yīng)用場景中,一個動作涉及到多個請求方,如果這時權(quán)限符合配置策略規(guī)則,這些請求任務(wù)就會同時發(fā)出同樣的消息,可是,只有一個句柄是接收方所調(diào)用的,所以作為接收者,當(dāng)接通收到消息后,要檢查一下標(biāo)記,看是哪個請求方標(biāo)識。也就是作為服務(wù)接收者在解析服務(wù)請求時,要通過標(biāo)記的方式檢查一下來源,檢測消息發(fā)送者的合法性。內(nèi)核提供了標(biāo)識(identify)系統(tǒng),可以通過查看標(biāo)識的方式追溯消息來源。3.3安全內(nèi)存管理技術(shù)為了解決工業(yè)嵌入式產(chǎn)品軟件內(nèi)存異常帶來的安全故障問題,在微內(nèi)核操作系統(tǒng)軟件架構(gòu)中利用內(nèi)存管理單元硬件,建立內(nèi)核與用戶內(nèi)存空間隔離的管理機(jī)制。該機(jī)制能夠?qū)?nèi)核空間與用戶所占用的內(nèi)存空間、用戶空間的進(jìn)程與進(jìn)程之間內(nèi)存隔離。經(jīng)驗證測試,該技術(shù)能夠有效解決某一軟件模塊內(nèi)存溢出所帶來的整體系統(tǒng)內(nèi)存數(shù)據(jù)故障問題,從而提高內(nèi)存管理的安全性。微內(nèi)核架構(gòu)下不為內(nèi)核對象動態(tài)分配內(nèi)存,內(nèi)核對象必須在用戶程序控制的內(nèi)存區(qū)中通過UntypedMemory句柄創(chuàng)建。這個機(jī)制可以顯式地控制應(yīng)用程序能夠使用的內(nèi)存數(shù)量,提供應(yīng)用程序間的內(nèi)存隔離。在系統(tǒng)啟動的時候,先預(yù)申請一塊內(nèi)存給內(nèi)存用,包括代碼、數(shù)據(jù)、棧等段。余下的內(nèi)存留給初始化線程,初始線程啟動時,還有一些其它的內(nèi)核句柄傳給它。新創(chuàng)建的原始內(nèi)存對象都是最初的這個原始內(nèi)存對象的子對象。用戶態(tài)程序利用Untyped_Retype()創(chuàng)建對象,得到的是句柄,通過這個句柄進(jìn)行后續(xù)操作。把虛擬地址管理、虛實映射管理、物理內(nèi)存(原始內(nèi)存)管理等分開,每一部分都允許應(yīng)用程序自己決定如何使用的內(nèi)存管理策略,對于應(yīng)用程序申請內(nèi)核對象,在客戶程序間分享授權(quán)信息。內(nèi)核也提供原始內(nèi)存重用機(jī)制,重用一段內(nèi)存區(qū)域是允許的,但要求那段原始內(nèi)存上沒有搖擺的引用,即沒有別的句柄指向這段內(nèi)存空間,跟蹤對象的引用、繼承關(guān)系。其不允許頁表共享,但允許頁共享。內(nèi)核啟動過程建立虛擬地址與物理地址的映射關(guān)系。以ZYNQ7000芯片為例,操作系統(tǒng)內(nèi)核建立的地址映射關(guān)系如圖3所示。圖3微內(nèi)核操作系統(tǒng)虛擬地址

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論