国产欧美日韩精品a在线观看-国产欧美日韩精品一区二区三区-国产欧美日韩精品综合-国产欧美中文字幕-一区二区三区精品国产-一区二区三区精品国产欧美

ACS880-07C
關(guān)注中國自動化產(chǎn)業(yè)發(fā)展的先行者!
CAIAC 2025
2024
工業(yè)智能邊緣計算2024年會
2023年工業(yè)安全大會
OICT公益講堂
當(dāng)前位置:首頁 >> 資訊 >> 企業(yè)資訊

資訊頻道

微內(nèi)核操作系統(tǒng)的發(fā)展與 關(guān)鍵技術(shù)解析
  • 廠商:和利時集團
  • 作者:王訓(xùn),周東紅
  • 點擊數(shù):2557     發(fā)布時間:2022-03-31 21:32:38
  • 分享到:
本文針對工業(yè)物聯(lián)網(wǎng)操作系統(tǒng)的特征要求,對最適合的微內(nèi)核操作系統(tǒng)的技術(shù)發(fā)展進行了深入調(diào)研,并對其中涉及的如任務(wù)實時調(diào)度、進程間高效通信、高效安全的內(nèi)存管理、信息安全等關(guān)鍵技術(shù)進行了深入剖析。

文獻標(biāo)識碼:B 文章編號:1003-0492(2022)03-056-06 中圖分類號:TP316

★王訓(xùn),周東紅(寧波和利時智能科技有限公司,浙江寧波315048)

摘要:工業(yè)物聯(lián)網(wǎng)領(lǐng)域的設(shè)備具有配置多樣的硬件環(huán)境特點,這種“碎片化”的特征催生了對應(yīng)操作系統(tǒng)很強的伸縮性需求,以實現(xiàn)不同底層硬件和功能部件進行抽象,對上層提供統(tǒng)一的編程接口,為工業(yè)物聯(lián)網(wǎng)打造良好生態(tài)環(huán)境提供基礎(chǔ)。

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)核尺寸伸縮性強,能適應(yīng)不同配置的硬件平臺;內(nèi)核實時性強,以滿足關(guān)鍵應(yīng)用的需要;內(nèi)核架構(gòu)可擴展性強,且足夠安全和可靠;操作系統(tǒng)核心、設(shè)備驅(qū)動程序或應(yīng)用程序均可遠(yuǎn)程升級;支持文件系統(tǒng)和外部存儲;支持遠(yuǎn)程配置、遠(yuǎn)程管理等維護功能;支持完善的網(wǎng)絡(luò)功能等。而微內(nèi)核架構(gòu)的操作系統(tǒng)可完全滿足上述應(yīng)用需求,故本文針對微內(nèi)核操作系統(tǒng)的技術(shù)發(fā)展及關(guān)鍵技術(shù)進行深入研究。

2   微內(nèi)核操作系統(tǒng)技術(shù)發(fā)展

2.1 傳統(tǒng)操作系統(tǒng)介紹

目前常見的EMO S(嵌入式操作系統(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等。它們主要特點是面向控制、通信等領(lǐng)域的實時性,輕量化,可定制裁剪,部分安全。但很少有一個操作系統(tǒng)同時擁有上述所有特點,比如具有強實時性的,可能安全性上有所減弱;具有安全特性的,可能在性能上做出犧牲等。

如今幾乎所有的操作系統(tǒng)都聲稱有一些物聯(lián)網(wǎng)連接功能,現(xiàn)有的操作系統(tǒng)大多數(shù)符合下列屬性:使用內(nèi)存少、電源效率高、模塊化可配置通信堆棧,對特定的無線和傳感器技術(shù)提供強有力的支持。一些項目注重物聯(lián)網(wǎng)安全,許多非Linux操作項目專注于實時確定性(Real-time Determinism),這也是工業(yè)物聯(lián)網(wǎng)的一個要求。

2.2 微內(nèi)核操作系統(tǒng)的發(fā)展歷程

內(nèi)核按照軟件架構(gòu)可以分為微內(nèi)核(Micro kernel)和宏內(nèi)核(Monolithic kernel)兩種概念。

微內(nèi)核結(jié)構(gòu)是由一個非常簡單的硬件抽象層和一組比較關(guān)鍵的原語或系統(tǒng)調(diào)用組成。這些原語,僅僅包括了建立一個系統(tǒng)必需的幾個部分,如線程管理、地址空間和進程間通信等。微內(nèi)核的目標(biāo)是將系統(tǒng)服務(wù)的實現(xiàn)和系統(tǒng)的基本操作規(guī)則分離開來。例如,進程的輸入/ 輸出鎖定服務(wù)可以由運行在微內(nèi)核之外的一個服務(wù)組件 來提供。這些非常模塊化的用戶態(tài)服務(wù)器用于完成操作 系統(tǒng)中比較高級的操作,使最內(nèi)核部分的設(shè)計更簡單。 一個服務(wù)組件的失效并不會導(dǎo)致整個系統(tǒng)的崩潰,內(nèi)核 需要做的,僅僅是重新啟動這個組件,而不必影響其它 的部分。微內(nèi)核將許多OS服務(wù)放入分離的進程,如文件系統(tǒng)、設(shè)備驅(qū)動程序,而進程通過消息傳遞調(diào)用OS服務(wù)。

宏內(nèi)核架構(gòu)的特性是整個內(nèi)核程序都是以內(nèi)核空間(Kernel Space)的身份及監(jiān)管者模式(Supervisor Mode)來運行。相對于其它類型的操作系統(tǒng)架構(gòu),如微內(nèi)核架構(gòu)或混內(nèi)核架構(gòu)等,會附加一些后臺服務(wù)以及系統(tǒng)調(diào)用,通過這種方式來實現(xiàn)各種操作系統(tǒng)服務(wù),如進程管理、共時(Concurrency)控制、存儲器管理等。即使有的宏內(nèi)核將其運作從整體性運作拆分成幾個服務(wù)模塊,并讓各模塊各自運作,其操作系統(tǒng)的代碼依然是高度緊密的,很難修改成其他類型的操作系統(tǒng)架構(gòu)。此外,所有的模塊也都在同一塊定址空間內(nèi)運行,倘若某個模塊有錯誤,運行時就會損及整個操作系統(tǒng)運行。Linux就是比較典型的宏內(nèi)核操作系統(tǒng)。

輕量化、可裁剪,適用于工業(yè)現(xiàn)場的穩(wěn)定性和安全性等指標(biāo),意味著微內(nèi)核架構(gòu)是個不錯的選擇。

在微內(nèi)核剛興起時,學(xué)術(shù)界普遍認(rèn)為其優(yōu)點是顯而易見的:

(1)支持更加模塊化的設(shè)計;

(2)小的內(nèi)核更易于更新與維護,bug會更少。正如大家知道Windows的死機很多是由D evice Drivers造成的。如果把它們移出內(nèi)核,它們中的bug很可能就不會造成死機;

(3)許多模塊的bug可被封閉在其模塊內(nèi),更加易于調(diào)試。如果文件系統(tǒng)、內(nèi)存管理和設(shè)備驅(qū)動成為一個個獨立的進程,則會讓Kernel維護更加高效,也十分有利于縮短整個操作系統(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ù)的可行性;在多處理器計算機上進行移植驗證了微內(nèi)核在多處理器計算機上的運行;使用共享內(nèi)存機制完成進程間通信(InterProcess Communication,IPC),從而提高了IP C的效率。后期甚至微軟也有所動作,在設(shè)計Windows NT時,他們把UI (User Interface)從Windows kernel中整個拿了出來。但是這一熱潮很快就冷了下來,原因就是性能問題。微軟在Windows NT后續(xù)版本中,又把部分底層UI放回了Windows kernelo正如在Java剛開始流行時,由于其具有許多C/ C++沒有的優(yōu)點,很多人認(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)的失誤。為證明其論點,他們設(shè)計并實現(xiàn)了幾個性能遠(yuǎn)超第一代的微內(nèi)核操作系統(tǒng),我們把它們稱為第二代微內(nèi)核系統(tǒng)。其中的一個代表作品就是德國計算科學(xué)家Jochen Liedtke設(shè)計的L4OL4不再是傳統(tǒng)Unix操作系統(tǒng)的簡單重構(gòu),而是一種全新的設(shè)計。L4微內(nèi)核高性能的關(guān)鍵就是使用了同步IPC技術(shù),并且使用寄存器傳遞消息,而不是內(nèi)存拷貝。基于L4微內(nèi)核,Jochen Liedtke提出了一種構(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)運而生,引入了Capability機制。任何操作系統(tǒng)內(nèi)核對象,比如線程、中斷和內(nèi)存等,都不能直接進行操作,而是通過一種類似對象引用的機制即Capability進行調(diào)用。目前,比較經(jīng)典支持Capability機制的第三代微內(nèi)核seL40seL4是在第二代微內(nèi)核L4基礎(chǔ)上發(fā)展而來,因而其不僅繼承了L4微內(nèi)核高性能的優(yōu)點,還具備基于斷點的IPC機制。這種機制最大的特點就是使用了能力空間的概念,進程在使用IPC請求系統(tǒng)服務(wù)時必須具備相對應(yīng)的能力,并持有不可偽造的令牌來表示擁有請求某種服務(wù)的能力。令牌可以被復(fù)制,可以被轉(zhuǎn)移,還可以通過IPC進行傳輸oSeL4是一個操作系統(tǒng)微內(nèi)核,也就是說,seL4本身不是一個完整的操作系統(tǒng),它提供很有限的API,沒有提供像傳統(tǒng)的操作系統(tǒng)Linux那樣的內(nèi)存管理、頁內(nèi)外交換、驅(qū)動程序等oSeL4微內(nèi)核設(shè)計針對實時應(yīng)用,可潛在應(yī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)能安全機制的操作系統(tǒng)。無獨有偶,國內(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)化0而且,據(jù)稱無論是fuchsia系統(tǒng)還是鴻蒙系統(tǒng)都將會大大發(fā)揮微內(nèi)核中內(nèi)核服務(wù)分離的優(yōu)勢,它將在多種平臺上運行,包括智能手機的嵌入式設(shè)備和個人PC,并且還將兼容Android系統(tǒng)上的各種應(yīng)用。這種高分離性是微內(nèi)核架構(gòu)的優(yōu)勢,同時也是宏內(nèi)核架構(gòu)為何始終無法將PC和智能移動終端進行統(tǒng)一的一大原因。從宏內(nèi)核U NIX發(fā)展的起點——標(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è)備進行統(tǒng)一的,具有跨時代意義的微內(nèi)核操作系統(tǒng)[1]

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所示。

image.png

圖1 微內(nèi)核操作系統(tǒng)任務(wù)優(yōu)先級示意圖

將操作系統(tǒng)所有處于Ready狀態(tài)的任務(wù)按照上 述關(guān)系映射到該優(yōu)先級位圖中。操作系統(tǒng)在每次進 行任務(wù)(假定其優(yōu)先級為prio)調(diào)度時,首先從位圖 中選擇出優(yōu)先級最高的任務(wù),選擇過程通過上圖中 的ScheduleRdyGrp映射優(yōu)先級最高組Y,然后通過ScheduleRdyBitMap進行映射確定在Y組中X列中的最高 優(yōu)先級。任務(wù)就緒時需要計算其對應(yīng)的ScheduleRdyGrp和ScheduleRdyTbl[n]值,其具體算法為:ScheduleRdyGrp |= ScheduleRdyBitMap[prio>>3]; ScheduleRdyTbl[prio>>3] |=  ScheduleRdyBitMap[prio&0x07]; 上面所述的X、Y映射關(guān)系表OSPriHighMap,偽 代碼如圖2所示。

image.png

圖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ù)進行采用輪轉(zhuǎn)調(diào)度算法,每個優(yōu)先級任務(wù)對應(yīng)一組任務(wù)隊列,依次進行輪轉(zhuǎn)調(diào)度。

Y = OSPriHighMap[ScheduleRdyGrp]; 

X = OSPriHighMap[ScheduleRdyTbl[Y]];

prio = Y<<3 + X;

3.2 進程間高效IP C通信技術(shù)

為了解決進程間通信效率問題,微內(nèi)核操作系統(tǒng)設(shè)計了一種基于用戶空間共享內(nèi)存的進程間通信機制,該機制采用進程間內(nèi)存授權(quán)管理的方法,建立了高效的消息隊列、事件、信號量通信機制。通過該技術(shù)的應(yīng)用,能夠有效避免進程通信過程中內(nèi)核空間與用戶空間切換頻繁問題,并提升進程間通信安全性。

seL4微內(nèi)核提供了線程間傳遞消息的機制,這個機制也用來傳遞用戶程序與內(nèi)核提供的服務(wù)之間的通信。消息被傳送到同步或異步IPC端點,這些端點由其它線程約定,其它消息類型由內(nèi)核[2]

每個消息包含一些消息字,還可以包含一些句柄。消息的傳遞是盡量通過通用寄存器來完成,但是硬件平臺的通用寄存器的數(shù)量是十分有限的,在寄存器放不下的就要放到被稱為IPC緩存(IPC buffer)的內(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字段進行自定義°capsUnwrapped字段只被接收方使用,用來指明哪個句柄被接收。

同步端點允許少量的數(shù)據(jù)及句柄在線程間同步傳遞。所謂同步,即信息發(fā)出去后發(fā)送者要等待應(yīng)答。如果發(fā)送者不是要發(fā)送的狀態(tài),而且接收者正好處于接收狀態(tài),這個消息就不被傳遞。如果發(fā)出IP C同步請求,沒有接收者準(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)記(message tag)中的extraCaps字段中。基本的IPC概念是端點(EndPoint)之間的任務(wù)。端點是一個內(nèi)核對象,其中包含了一個線程隊列和一個狀態(tài)(state)標(biāo)志,該標(biāo)志用來記錄隊列中的線程是處于要發(fā)送(Send)消息的狀態(tài),還是處于等待接收消息(Wait)的狀態(tài)。它扮演了一個“一個或多個發(fā)送者”與“一個或多個接收者”之間單向通信的作用。這個全局的標(biāo)識符是不暴露給參與IPC的各方的,無論是發(fā)送者,還是接收者,都是使用一個本地端點地址來工作。一個端點上,可能有多個線程用來發(fā)送或接收消息。當(dāng)一個線程對調(diào)用端點發(fā)送與接收消息時,內(nèi)核將扮演在它們之間傳遞消息的角色。沒有伙伴的線程,即僅有發(fā)送任務(wù)無接收任務(wù),或僅有接收任務(wù)無發(fā)送任務(wù),將被掛起(suspend),算法中并未規(guī)定,哪些線程首先被喚醒(resume),一般是先進先出(FIFO)。

異步端點(Asynchronous EndPoint,AsyncEP)允許非阻塞異步發(fā)送消息,但異步消息中不能有句柄。

因為同一時間一個端點(EndPoint)只能接收一個消息,而一個服務(wù)者希望為N個客戶端提供服務(wù),于是每個客戶端都拿到了這個端點的一個引用,內(nèi)核提供了一個標(biāo)記(badge)的辦法,有標(biāo)記的句柄就是標(biāo)記句柄(badged endpoint capability)。每個標(biāo)記由產(chǎn)生它的服務(wù)線程(Server)定義,因為這個句柄就是服務(wù)線程通過C Node_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)存空間隔離的管理機制。該機制能夠?qū)?nèi)核空間與用戶所占用的內(nèi)存空間、用戶空間的進程與進程之間內(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ū)中通過U ntyped Memory句柄創(chuàng)建。這個機制可以顯式地控制應(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)建對象,得到的是句柄,通過這個句柄進行后續(xù)操作。把虛擬地址管理、虛實映射管理、物理內(nèi)存(原始內(nèi)存)管理等分開,每一部分都允許應(yīng)用程序自己決定如何使用的內(nèi)存管理策略,對于應(yīng)用程序申請內(nèi)核對象,在客戶程序間分享授權(quán)信息。內(nèi)核也提供原始內(nèi)存重用機制,重用一段內(nèi)存區(qū)域是允許的,但要求那段原始內(nèi)存上沒有搖擺的引用,即沒有別的句柄指向這段內(nèi)存空間,跟蹤對象的引用、繼承關(guān)系。其不允許頁表共享,但允許頁共享。

內(nèi)核啟動過程建立虛擬地址與物理地址的映射關(guān)系。以ZYNQ7000芯片為例,操作系統(tǒng)內(nèi)核建立的地址映射關(guān)系如圖3所示。

image.png

圖3  微內(nèi)核操作系統(tǒng)虛擬地址與物理地理映射實例

線程(Thread)是程序執(zhí)行單位,程序通過管理線程來管理CPU時間及程序執(zhí)行的上下文環(huán)境。線程管理數(shù)據(jù)結(jié)構(gòu)是線程控制塊(Thread Control Block, TCB)。每個線程控制塊都有一個句柄空間cspace和虛擬地址空間vspace與之關(guān)聯(lián)。虛擬地址空間vspace可以同時被多個線程共享°vspace分配虛擬內(nèi)存時,首先選擇一個合適的虛擬地址,然后找到一塊合適的物理內(nèi)存,接下來標(biāo)記物理內(nèi)存被使用,然后將虛擬地址返回給用戶ovspace實現(xiàn)的虛擬內(nèi)存,類似于Linux系統(tǒng)的虛擬內(nèi)存映射(mmap),所以當(dāng)申請的空間小于4kB時會分配4kB空間。

微內(nèi)核操作系統(tǒng)的內(nèi)存共享是基于頁的,要共享頁必須將頁加入對應(yīng)程序的頁表。一個頁被N個程序加入自己的頁表,這個頁就是共享內(nèi)存。cspace用于創(chuàng)建每個內(nèi)核對象對應(yīng)的句柄空間。每個內(nèi)核對象必須對應(yīng)一個句柄空間,每次創(chuàng)建內(nèi)核對象,必須先分配句柄空間,App隨后創(chuàng)建并初始化alloc.cspace。

4   典型應(yīng)用

和利時集團基于微內(nèi)核架構(gòu)已經(jīng)設(shè)計出自己的面向工業(yè)物聯(lián)網(wǎng)的微內(nèi)核操作系統(tǒng),并成功應(yīng)用于公司的DCS、SIS、PLC、MC等系列產(chǎn)品,目前已經(jīng)支持了ARM.MIPS.POWERP等主流嵌入式處理器平臺,并分別在基于ZYNQ7000系列芯片、龍芯2K1000系列芯片、MPC83XX系列芯片的控制器硬件基礎(chǔ)上,完成了操作系統(tǒng)的開發(fā)與驗證測試工作。

具體的微內(nèi)核操作系統(tǒng)的設(shè)計方案如圖4所示。

image.png

圖4 基于微內(nèi)核操作系統(tǒng)的應(yīng)用開發(fā)分層圖

5   結(jié)論

本文通過研究微內(nèi)核操作系統(tǒng)的技術(shù)發(fā)展過程及關(guān)鍵技術(shù),得出其具備易于擴充、易于移植、可提高系統(tǒng)的可靠性、提供多種操作環(huán)境、適宜于分布式計算、有助于多處理器系統(tǒng)的實現(xiàn)、支持實時服務(wù)等特點,因此其是當(dāng)前完全適用于工業(yè)物聯(lián)網(wǎng)應(yīng)用場景的輕量級操作系統(tǒng)。

作者簡介:

王訓(xùn)(1983-),男,北京人,高級工程師,學(xué)士,現(xiàn)就職于寧波和利時智能科技有限公司,主要研究方向為工業(yè)自動化軟件。

周東紅(1970-),男,浙江東陽人,高級工程師,博士,現(xiàn)就職于寧波和利時智能科技有限公司,主要研究方向為工業(yè)自動化控制及工業(yè)物聯(lián)網(wǎng)。

參考文獻:

[1]彭星海.基于X86架構(gòu)的微內(nèi)核操作系統(tǒng)的研究和實現(xiàn)[D].成都:電子科技大學(xué),2020.

[2]林禹清.面向控制領(lǐng)域的微內(nèi)核系統(tǒng)服務(wù)的設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2019.

[3]錢振江.微內(nèi)核架構(gòu)內(nèi)存管理的形式化設(shè)計和驗證方法研究[J].電子學(xué)報,2017, 45⑴:251 -256.

摘自《自動化博覽》2022年第三期

熱點新聞

推薦產(chǎn)品

x
  • 在線反饋
1.我有以下需求:



2.詳細(xì)的需求:
姓名:
單位:
電話:
郵件:
主站蜘蛛池模板: 亚洲成人在线网 | 欧美一级淫片a免费播放口aaa | 亚洲欧美日韩国产综合高清 | 亚洲精品资源在线 | 色涩五月天 | 国产亚洲精品久久久久久久网站 | 免费在线观看a级片 | 国产精品日本 | 美国免费三片在线观看 | 一本久道久久综合婷婷五 | 欧美激情久久久久久久久 | 免费一区区三区四区 | 国产亚洲精品久久 | 日本在线观看网址 | 欧美最大成人毛片视频网站 | 久久免费在线观看 | 成 人 黄 色 视频播放16 | 成人免费视频播放 | 九九精品激情在线视频 | 91视频久久久久 | 欧美成人在线观看 | 中文字幕在线一区二区在线 | 夜色1网站 | 韩日精品 | 特级毛片在线播放 | 欧美日韩国产在线人成dvd | 黄网国产 | 欧美一区二区在线播放 | 黄色毛片三级 | 国内外成人免费在线视频 | 亚洲美女性视频 | 美女张开腿让男人捅的视频 | 久久精品亚洲综合一品 | 欧美成人看片一区二区三区尤物 | 亚欧在线视频 | 亚洲毛片视频 | 国产精品二区三区免费播放心 | 中文字幕有码在线播放 | 欧美黄区| 国产精品hd免费观看 | 亚洲成aⅴ人片在线观 |