• <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

    <table id="fficu"></table>

    <sup id="fficu"></sup>
    <output id="fficu"></output>
    1. ACS880-07C
      關(guān)注中國自動(dòng)化產(chǎn)業(yè)發(fā)展的先行者!
      橫河電機-23年10月11日
      2024
      工業(yè)智能邊緣計算2024年會(huì )
      2024中國自動(dòng)化產(chǎn)業(yè)年會(huì )
      2023年工業(yè)安全大會(huì )
      OICT公益講堂
      當前位置:首頁(yè) >> 資訊 >> 企業(yè)資訊

      資訊頻道

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

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

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

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

      1   引言

      工業(yè)物聯(lián)網(wǎng)系統中適配的操作系統特殊的使用場(chǎng)景決定了其除具備傳統操作系統的設備資源管理功能外,還具備下列功能:屏蔽工業(yè)物聯(lián)網(wǎng)碎片化的特征,提供統一的編程接口;工業(yè)物聯(lián)網(wǎng)生態(tài)環(huán)境培育;降低工業(yè)物聯(lián)網(wǎng)應用開(kāi)發(fā)的成本和時(shí)間;為工業(yè)物聯(lián)網(wǎng)統一管理奠定基礎。由此可見(jiàn),工業(yè)物聯(lián)網(wǎng)操作系統對實(shí)現智能制造、智能工廠(chǎng)等當前熱門(mén)領(lǐng)域均起著(zhù)至關(guān)重要的作用。

      對工業(yè)物聯(lián)網(wǎng)操作的技術(shù)要求包括:內核尺寸伸縮性強,能適應不同配置的硬件平臺;內核實(shí)時(shí)性強,以滿(mǎn)足關(guān)鍵應用的需要;內核架構可擴展性強,且足夠安全和可靠;操作系統核心、設備驅動(dòng)程序或應用程序均可遠程升級;支持文件系統和外部存儲;支持遠程配置、遠程管理等維護功能;支持完善的網(wǎng)絡(luò )功能等。而微內核架構的操作系統可完全滿(mǎn)足上述應用需求,故本文針對微內核操作系統的技術(shù)發(fā)展及關(guān)鍵技術(shù)進(jìn)行深入研究。

      2   微內核操作系統技術(shù)發(fā)展

      2.1 傳統操作系統介紹

      目前常見(jiàn)的EMO S(嵌入式操作系統)有幾十種,但很多數是在物聯(lián)網(wǎng)興起之前就有,隨著(zhù)物聯(lián)網(wǎng)概念的提升,這些操作系統都宣稱(chēng)加入了物聯(lián)網(wǎng)特性的支持,而專(zhuān)門(mén)針對物聯(lián)網(wǎng)全新研發(fā)的嵌入式操作系統還是剛剛起步。

      目前主流的嵌入式實(shí)時(shí)操作系有:Linux及實(shí)時(shí)性或輕量化的變種、uCOS—II、FreeRTOS、eCos、VxWorks、Nucleus、ThreadX、QNX等。它們主要特點(diǎn)是面向控制、通信等領(lǐng)域的實(shí)時(shí)性,輕量化,可定制裁剪,部分安全。但很少有一個(gè)操作系統同時(shí)擁有上述所有特點(diǎn),比如具有強實(shí)時(shí)性的,可能安全性上有所減弱;具有安全特性的,可能在性能上做出犧牲等。

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

      2.2 微內核操作系統的發(fā)展歷程

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

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

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

      輕量化、可裁剪,適用于工業(yè)現場(chǎng)的穩定性和安全性等指標,意味著(zhù)微內核架構是個(gè)不錯的選擇。

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

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

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

      (3)許多模塊的bug可被封閉在其模塊內,更加易于調試。如果文件系統、內存管理和設備驅動(dòng)成為一個(gè)個(gè)獨立的進(jìn)程,則會(huì )讓Kernel維護更加高效,也十分有利于縮短整個(gè)操作系統的研發(fā)時(shí)間。

      基于上述原因,很多學(xué)術(shù)研究人員和軟件廠(chǎng)家開(kāi)始嘗試使用微內核的概念設計操作系統。第一代微內核操作系統的代表作品是Mach,由卡內基梅隆大學(xué)(CMU)設計,Mach發(fā)布了2個(gè)版本,主要完成了以下工作:從概念上驗證了微內核技術(shù)的可行性;在多處理器計算機上進(jìn)行移植驗證了微內核在多處理器計算機上的運行;使用共享內存機制完成進(jìn)程間通信(InterProcess Communication,IPC),從而提高了IP C的效率。后期甚至微軟也有所動(dòng)作,在設計Windows NT時(shí),他們把UI (User Interface)從Windows kernel中整個(gè)拿了出來(lái)。但是這一熱潮很快就冷了下來(lái),原因就是性能問(wèn)題。微軟在Windows NT后續版本中,又把部分底層UI放回了Windows kernelo正如在Java剛開(kāi)始流行時(shí),由于其具有許多C/ C++沒(méi)有的優(yōu)點(diǎn),很多人認為它會(huì )很快取代C/C++成為第一編程語(yǔ)言。但直至今天也沒(méi)有發(fā)生,其中一個(gè)重要原因就是Java程序的性能落后于C程序,至今還限制著(zhù)它在許多場(chǎng)合的應用。

      第一代的微內核操作系統的性能,包括Mach在內,遠不及宏內核操作系統。所以大多數人又回到傳統技術(shù)中去了。但在九十年代后期,微內核迎來(lái)了其生命中的第二春。一些研究人員認真分析了微內核系統性能差的原因,指出其性能差并非由根本內在的因素造成,而是設計實(shí)現的失誤。為證明其論點(diǎn),他們設計并實(shí)現了幾個(gè)性能遠超第一代的微內核操作系統,我們把它們稱(chēng)為第二代微內核系統。其中的一個(gè)代表作品就是德國計算科學(xué)家Jochen Liedtke設計的L4OL4不再是傳統Unix操作系統的簡(jiǎn)單重構,而是一種全新的設計。L4微內核高性能的關(guān)鍵就是使用了同步IPC技術(shù),并且使用寄存器傳遞消息,而不是內存拷貝?;贚4微內核,Jochen Liedtke提出了一種構建服務(wù)器模式操作系統的方法,整個(gè)系統服務(wù)由一系列服務(wù)器組成,比如內存管理服務(wù)器、文件系統服務(wù)器等,每個(gè)服務(wù)器在對外提供服務(wù)的同時(shí)也可以調用其他服務(wù)器提供的服務(wù)。

      由于第二代微內核設計為了追求高性能,線(xiàn)程ID是一種全局共享靜態(tài)資源,任何任務(wù)中的線(xiàn)程都可以通過(guò)線(xiàn)程ID向其他服務(wù)器線(xiàn)程發(fā)起服務(wù)請求,造成了安全上的隱患。第三代微內核應運而生,引入了Capability機制。任何操作系統內核對象,比如線(xiàn)程、中斷和內存等,都不能直接進(jìn)行操作,而是通過(guò)一種類(lèi)似對象引用的機制即Capability進(jìn)行調用。目前,比較經(jīng)典支持Capability機制的第三代微內核seL40seL4是在第二代微內核L4基礎上發(fā)展而來(lái),因而其不僅繼承了L4微內核高性能的優(yōu)點(diǎn),還具備基于斷點(diǎn)的IPC機制。這種機制最大的特點(diǎn)就是使用了能力空間的概念,進(jìn)程在使用IPC請求系統服務(wù)時(shí)必須具備相對應的能力,并持有不可偽造的令牌來(lái)表示擁有請求某種服務(wù)的能力。令牌可以被復制,可以被轉移,還可以通過(guò)IPC進(jìn)行傳輸oSeL4是一個(gè)操作系統微內核,也就是說(shuō),seL4本身不是一個(gè)完整的操作系統,它提供很有限的API,沒(méi)有提供像傳統的操作系統Linux那樣的內存管理、頁(yè)內外交換、驅動(dòng)程序等oSeL4微內核設計針對實(shí)時(shí)應用,可潛在應用于強調安全和關(guān)鍵性任務(wù)的領(lǐng)域內,如軍用和醫療行業(yè)。研究發(fā)現常用的攻擊方法對seL4無(wú)效,如惡意程序經(jīng)常采用的緩存溢出漏洞。

      正因為微內核原生的諸多優(yōu)勢,目前其內核架構越來(lái)越被人們重視,被認為其是一種面對未來(lái)的操作系統架構?;ヂ?lián)網(wǎng)巨頭公司,同時(shí)也是操作系統研發(fā)的龍頭公司Google,在其以L(fǎng)inux宏內核為操作系統內核開(kāi)發(fā)的Android操作系統成功以后,它已經(jīng)在積極地開(kāi)發(fā)全新內核的操作系統fuchsia,這一操作系統將不再是Linux宏內核系統的衍生版,而是真正意義上的微內核操作系統。并且,它將是一款基于權能安全機制的操作系統。無(wú)獨有偶,國內通信巨頭華為公司,在完成自主研發(fā)的處理器芯片麒麟系列以后,其自主研發(fā)的微內核架構操作系統鴻蒙系統也正式推向市場(chǎng)。從全球性公司研發(fā)目標中可以看到,微內核是被當代各大全球性公司認可的內核架構,也是未來(lái)非常有前景的一種內核架構,其發(fā)展將會(huì )越來(lái)越標準化0而且,據稱(chēng)無(wú)論是fuchsia系統還是鴻蒙系統都將會(huì )大大發(fā)揮微內核中內核服務(wù)分離的優(yōu)勢,它將在多種平臺上運行,包括智能手機的嵌入式設備和個(gè)人PC,并且還將兼容Android系統上的各種應用。這種高分離性是微內核架構的優(yōu)勢,同時(shí)也是宏內核架構為何始終無(wú)法將PC和智能移動(dòng)終端進(jìn)行統一的一大原因。從宏內核U NIX發(fā)展的起點(diǎn)——標準化和輕便型,到Google最終選擇摒棄宏內核而使用微內核來(lái)開(kāi)發(fā)下一代全新操作系統,不難看出,微內核的思想是非常符合包括工業(yè)物聯(lián)網(wǎng)在內的未來(lái)社會(huì )發(fā)展的需要。在未來(lái),微內核發(fā)展有望開(kāi)發(fā)出顛覆傳統操作系統環(huán)境,將PC、移動(dòng)智能終端以及嵌入式設備進(jìn)行統一的,具有跨時(shí)代意義的微內核操作系統[1]。

      3   微內核操作系統關(guān)鍵技術(shù)解析

      3.1 實(shí)時(shí)任務(wù)調度技術(shù)

      為了滿(mǎn)足工業(yè)物聯(lián)網(wǎng)產(chǎn)品應用需求,該微內核操作系統支持兩種任務(wù)調度策略:基于優(yōu)先級的搶占式調度策略、時(shí)間片輪轉策略,并支持多級優(yōu)先級配置。

      應用任務(wù)可以通過(guò)接口創(chuàng )建另一個(gè)任務(wù),并設置該任務(wù)的優(yōu)先級。出于安全性考慮,當一個(gè)任務(wù)創(chuàng )建另外一個(gè)任務(wù)時(shí),只能把另外一個(gè)任務(wù)優(yōu)先級設置不高于該任務(wù),即任務(wù)不能創(chuàng )建比自己優(yōu)先級還高的子任務(wù)。

      基于優(yōu)先級的搶占式調度策略采用基于位圖的調度算法,該調度算法將每個(gè)任務(wù)的優(yōu)先級映射到了一個(gè)調度的二維表,該二維表用32個(gè)字節表示,每個(gè)字節8位,一共256位,共代表256個(gè)優(yōu)先級,如圖1所示。

      image.png

      圖1 微內核操作系統任務(wù)優(yōu)先級示意圖

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

      image.png

      圖2 微內核操作系統基于位圖的優(yōu)先級映射關(guān)系

      這樣無(wú)論系統負載高低,都能夠使系統任務(wù)調度切換時(shí)間復雜度相同,從而提高系統調度的確定性。查詢(xún)任務(wù)就緒態(tài)下的優(yōu)先級可以最終抽象為如下表示。對于相同優(yōu)先級的任務(wù)進(jìn)行采用輪轉調度算法,每個(gè)優(yōu)先級任務(wù)對應一組任務(wù)隊列,依次進(jìn)行輪轉調度。

      Y = OSPriHighMap[ScheduleRdyGrp]; 

      X = OSPriHighMap[ScheduleRdyTbl[Y]];

      prio = Y<<3 + X;

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

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

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

      每個(gè)消息包含一些消息字,還可以包含一些句柄。消息的傳遞是盡量通過(guò)通用寄存器來(lái)完成,但是硬件平臺的通用寄存器的數量是十分有限的,在寄存器放不下的就要放到被稱(chēng)為IPC緩存(IPC buffer)的內存中,每個(gè)線(xiàn)程控制塊有一個(gè)IPC通信用的緩存區buffer,用來(lái)在IPC或內核對象調用時(shí)傳遞額外的參數,所謂額外的參數,即無(wú)法存儲在寄存器里的數據,不同的平臺可以使用的寄存器不同,所以這個(gè)定義與平臺相關(guān)。每個(gè)IPC消息包含一個(gè)標識,其數據結構包含標簽label、消息長(cháng)度length、句柄數量extraCaps、接收句柄capsUnwrapped等4個(gè)字段。消息的長(cháng)度和句柄的數量決定了消息寄存器的使用及發(fā)送線(xiàn)程想要傳遞的句柄的數量。內核不解釋label字段°label字段只是被當作消息的第一個(gè)數據被傳送。用戶(hù)程序可以對label字段進(jìn)行自定義°capsUnwrapped字段只被接收方使用,用來(lái)指明哪個(gè)句柄被接收。

      同步端點(diǎn)允許少量的數據及句柄在線(xiàn)程間同步傳遞。所謂同步,即信息發(fā)出去后發(fā)送者要等待應答。如果發(fā)送者不是要發(fā)送的狀態(tài),而且接收者正好處于接收狀態(tài),這個(gè)消息就不被傳遞。如果發(fā)出IP C同步請求,沒(méi)有接收者準備好,則阻塞,排隊等待,直到有接收者,則消息發(fā)送給第一個(gè)準備好了的接收者。如果發(fā)出等待請求給內核,但沒(méi)有線(xiàn)程向它發(fā)消息,則阻塞并排隊等待請求,直到有發(fā)送者,就接收第一個(gè)發(fā)送者的消息。同步消息中可以有句柄,消息中的句柄必須有Grant權限,沒(méi)有Grant權限的句柄,不會(huì )隨消息的傳遞而傳遞。句柄存在于消息的caps字段,caps中的每一項被當作CPTR解釋為線(xiàn)程句柄空間中的一個(gè)句柄。消息中句柄的數量存于消息標記(message tag)中的extraCaps字段中?;镜腎PC概念是端點(diǎn)(EndPoint)之間的任務(wù)。端點(diǎn)是一個(gè)內核對象,其中包含了一個(gè)線(xiàn)程隊列和一個(gè)狀態(tài)(state)標志,該標志用來(lái)記錄隊列中的線(xiàn)程是處于要發(fā)送(Send)消息的狀態(tài),還是處于等待接收消息(Wait)的狀態(tài)。它扮演了一個(gè)“一個(gè)或多個(gè)發(fā)送者”與“一個(gè)或多個(gè)接收者”之間單向通信的作用。這個(gè)全局的標識符是不暴露給參與IPC的各方的,無(wú)論是發(fā)送者,還是接收者,都是使用一個(gè)本地端點(diǎn)地址來(lái)工作。一個(gè)端點(diǎn)上,可能有多個(gè)線(xiàn)程用來(lái)發(fā)送或接收消息。當一個(gè)線(xiàn)程對調用端點(diǎn)發(fā)送與接收消息時(shí),內核將扮演在它們之間傳遞消息的角色。沒(méi)有伙伴的線(xiàn)程,即僅有發(fā)送任務(wù)無(wú)接收任務(wù),或僅有接收任務(wù)無(wú)發(fā)送任務(wù),將被掛起(suspend),算法中并未規定,哪些線(xiàn)程首先被喚醒(resume),一般是先進(jìn)先出(FIFO)。

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

      因為同一時(shí)間一個(gè)端點(diǎn)(EndPoint)只能接收一個(gè)消息,而一個(gè)服務(wù)者希望為N個(gè)客戶(hù)端提供服務(wù),于是每個(gè)客戶(hù)端都拿到了這個(gè)端點(diǎn)的一個(gè)引用,內核提供了一個(gè)標記(badge)的辦法,有標記的句柄就是標記句柄(badged endpoint capability)。每個(gè)標記由產(chǎn)生它的服務(wù)線(xiàn)程(Server)定義,因為這個(gè)句柄就是服務(wù)線(xiàn)程通過(guò)C Node_Mint()之類(lèi)的手段得到的。

      在一些應用場(chǎng)景中,一個(gè)動(dòng)作涉及到多個(gè)請求方,如果這時(shí)權限符合配置策略規則,這些請求任務(wù)就會(huì )同時(shí)發(fā)出同樣的消息,可是,只有一個(gè)句柄是接收方所調用的,所以作為接收者,當接通收到消息后,要檢査一下標記,看是哪個(gè)請求方標識。也就是作為服務(wù)接收者在解析服務(wù)請求時(shí),要通過(guò)標記的方式檢査一下來(lái)源,檢測消息發(fā)送者的合法性。內核提供了標識(identify)系統,可以通過(guò)査看標識的方式追溯消息來(lái)源。

      3.3 安全內存管理技術(shù)

      為了解決工業(yè)嵌入式產(chǎn)品軟件內存異常帶來(lái)的安全故障問(wèn)題,在微內核操作系統軟件架構中利用內存管理單元硬件,建立內核與用戶(hù)內存空間隔離的管理機制。該機制能夠將內核空間與用戶(hù)所占用的內存空間、用戶(hù)空間的進(jìn)程與進(jìn)程之間內存隔離。經(jīng)驗證測試,該技術(shù)能夠有效解決某一軟件模塊內存溢出所帶來(lái)的整體系統內存數據故障問(wèn)題,從而提高內存管理的安全性。

      微內核架構下不為內核對象動(dòng)態(tài)分配內存,內核對象必須在用戶(hù)程序控制的內存區中通過(guò)U ntyped Memory句柄創(chuàng )建。這個(gè)機制可以顯式地控制應用程序能夠使用的內存數量,提供應用程序間的內存隔離。在系統啟動(dòng)的時(shí)候,先預申請一塊內存給內存用,包括代碼、數據、棧等段。余下的內存留給初始化線(xiàn)程,初始線(xiàn)程啟動(dòng)時(shí),還有一些其它的內核句柄傳給它。新創(chuàng )建的原始內存對象都是最初的這個(gè)原始內存對象的子對象。用戶(hù)態(tài)程序利用Untyped_Retype()創(chuàng )建對象,得到的是句柄,通過(guò)這個(gè)句柄進(jìn)行后續操作。把虛擬地址管理、虛實(shí)映射管理、物理內存(原始內存)管理等分開(kāi),每一部分都允許應用程序自己決定如何使用的內存管理策略,對于應用程序申請內核對象,在客戶(hù)程序間分享授權信息。內核也提供原始內存重用機制,重用一段內存區域是允許的,但要求那段原始內存上沒(méi)有搖擺的引用,即沒(méi)有別的句柄指向這段內存空間,跟蹤對象的引用、繼承關(guān)系。其不允許頁(yè)表共享,但允許頁(yè)共享。

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

      image.png

      圖3  微內核操作系統虛擬地址與物理地理映射實(shí)例

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

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

      4   典型應用

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

      具體的微內核操作系統的設計方案如圖4所示。

      image.png

      圖4 基于微內核操作系統的應用開(kāi)發(fā)分層圖

      5   結論

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

      作者簡(jiǎn)介:

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

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

      參考文獻:

      [1]彭星海.基于X86架構的微內核操作系統的研究和實(shí)現[D].成都:電子科技大學(xué),2020.

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

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

      摘自《自動(dòng)化博覽》2022年第三期

      熱點(diǎn)新聞

      推薦產(chǎn)品

      x
      • 在線(xiàn)反饋
      1.我有以下需求:



      2.詳細的需求:
      姓名:
      單位:
      電話(huà):
      郵件:
      欧美精品欧美人与动人物牲交_日韩乱码人妻无码中文_国产私拍大尺度在线视频_亚洲男人综合久久综合天

    2. <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

      <table id="fficu"></table>

      <sup id="fficu"></sup>
      <output id="fficu"></output>