<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式實(shí)時(shí)操作系統設計探討

嵌入式實(shí)時(shí)操作系統設計探討

作者: 時(shí)間:2007-12-14 來(lái)源:網(wǎng)絡(luò ) 收藏
在傳統的中,內核和應用都運行在同一特權級,應用程序可以無(wú)限制的訪(fǎng)問(wèn)整個(gè)系統地址空間。因此在某些情況下,應用的潛在危險動(dòng)作會(huì )影響其他應用和內核的正常運行,甚至導致系統崩潰或者誤操作。

為了滿(mǎn)足航空電子對高可靠性、高可用性以及高服務(wù)性的要求, 1997年1月ARINC發(fā)布了ARINC653(航空電子應用軟件標準接口),并于2003年7月發(fā)布ARINC653 Supplement 1,對區間管理、區間通信及健康監測部分進(jìn)行了補充說(shuō)明,用以規范航空電子設備和系統的開(kāi)發(fā)。

隨即,國外各大開(kāi)發(fā)商相繼推出此類(lèi)支持ARINC653,具有內核和應用保護機制的。但在國內的領(lǐng)域,這樣的研究還有一定差距?;诖?,本文提出了一種航空電子嵌入式(A-RTOS,Avionics RTOS)的一種思路,并在具有MMU和支持高級保護模式的目標板上完成了實(shí)現。

航空電子標準ARINC653

ARINC653主要闡述了模塊化綜合航空電子設備IMA(Integrated Modular Avionics)使用的應用軟件的基線(xiàn)操作環(huán)境。它定義了航空應用與下層操作環(huán)境之間的接口和數據交換的模式以及服務(wù)的行為,并描述了嵌入式航空電子軟件的運行時(shí)環(huán)境。

ARINC653 Supplement 1對ARINC653的補充主要包括以下幾點(diǎn):在系統結構上,提出了System Partition的概念,明確區間上的應用調度應該是區間級別的,這些應用共享區間資源;區間管理方面,闡述區間調度中主時(shí)間框架的定義原則,并補充了區間模式的變遷過(guò)程;對區間間通信的原則進(jìn)行更為詳盡的說(shuō)明;增加關(guān)于健康監測的錯誤級別和錯誤處理的解釋。

軟件構成

航空電子中的核心模塊軟件包括兩類(lèi):應用軟件和核心軟件。位于應用軟件和操作系統OS之間的APEX(APplication EXecutive)接口,定義了系統為應用軟件提供的一個(gè)功能集合。利用這個(gè)功能集合,應用軟件可以控制系統的調度,通信和內部狀態(tài)信息。APEX接口相當于為應用提供的一種高層語(yǔ)言。而對于OS來(lái)說(shuō),是關(guān)于參數和入口機制的定義。

圖1給出了ARINC653中各部分之間的關(guān)系。

分區和區間管理

分區(Partitioning)是ARINC653中一個(gè)核心概念。在IMA(Integrated Modular Avionics)系統中,一個(gè)核心模塊會(huì )包含一個(gè)或多個(gè)航空電子應用,并且這些應用要能夠獨立運行。分區就是航空電子應用中的一個(gè)功能劃分。分區的單位稱(chēng)為區間,區間內的每一個(gè)執行單元稱(chēng)為進(jìn)程。每一個(gè)區間具有自己獨立的數據、上下文和運行環(huán)境,這樣做的好處是能夠防止一個(gè)區間的錯誤影響到其他區間。另外,它能使得整個(gè)系統容易驗證、確認和認證。

區間化以及區間的管理和調度是由OS來(lái)實(shí)現的。ARINC653為區間的調度規定了一種基于時(shí)間窗的循環(huán)調度算法。這種調度算法的原理如圖2所示。

圖2 基于時(shí)間窗的循環(huán)調度算法原理

為了完成各區間的周期性調度,由OS維護一個(gè)固定時(shí)間長(cháng)度的主時(shí)間框架,該時(shí)間框架在模塊的運行期內周期性的重復。每個(gè)時(shí)間框架可以劃分為若干個(gè)時(shí)間窗口。系統利用一個(gè)事先確定的配置表,在規定的時(shí)間窗口內激活對應區間的運行。這樣就能夠保證每個(gè)應用在分配給它的時(shí)間周期內訪(fǎng)問(wèn)公共資源不被打斷。

ARINC supplement 1對主時(shí)間框架的時(shí)間定義原則進(jìn)行了補充。它規定主時(shí)間框架的大小應該是核心模塊中所有區間周期的最小公倍數的正整數倍,并應考慮到每個(gè)區間每次執行的時(shí)間長(cháng)度和執行頻率。

在A(yíng)RINC653 Supplement 1發(fā)布時(shí)又增加了系統區間屬性和啟動(dòng)條件屬性。區間的工作模式包括空閑,冷啟動(dòng),熱啟動(dòng)和正常四種,如圖3所示。每個(gè)區間所需資源在系統構建時(shí)指定,在區間初始化完成時(shí)區間對象創(chuàng )建。OS在進(jìn)入運行模式時(shí)啟動(dòng)應用區間,然后區間進(jìn)入正常運行模式。監測管理功能在響應致命錯誤時(shí)將重啟區間或者停止區間的運行。

圖3 區間狀態(tài)轉化模型

A-RTOS系統與實(shí)現

A-RTOS的系統結構如圖4所示。在此系統中,各個(gè)應用工作在所屬區間的環(huán)境中,并且應用和內核及各個(gè)應用之間都被保護墻隔離,無(wú)法相互破壞,從而保證了核心模塊的可靠性。

             圖4 A-RTOS的系統結構

隔離和保護機制

隔離和保護是ARINC653首要強調的特性,也是必須解決的重點(diǎn)之一。A-RTOS主要采用兩種方式來(lái)實(shí)現應用與內核以及應用之間的隔離和保護。

第一種方式是使用內存管理單元MMU。通過(guò)MMU能夠實(shí)現邏輯地址到物理地址的轉化,并且對訪(fǎng)問(wèn)權限進(jìn)行控制。這樣可以保護操作系統內核不受應用軟件有意或無(wú)意的破壞,也有效的防止了各應用軟件之間的相互破壞。圖5給出了MMU的頁(yè)目錄/頁(yè)表方式的地址轉換流程。

圖5 頁(yè)目錄/頁(yè)表方式的地址轉換流程

第二種方式就是系統調用。A-RTOS為了實(shí)現對內核及應用之間的保護,提供了兩種運行形態(tài):用戶(hù)態(tài)和系統態(tài)。其中操作系統內核是運行在系統態(tài)的。因此用戶(hù)態(tài)的應用是不能夠直接調用系統內核提供的功能接口的,必須通過(guò)TRAP系統調用方式來(lái)進(jìn)行。

此種方式下,當用戶(hù)態(tài)的應用需要調用內核提供的系統調用時(shí),首先要執行一組特殊的指令使系統進(jìn)入系統態(tài)以便執行需要的系統調用,當調用完成后,內核將執行另一組特征指令將系統返回到用戶(hù)態(tài)。

每種支持保護模式的系統都提供了專(zhuān)門(mén)的軟中斷命令來(lái)完成從用戶(hù)態(tài)進(jìn)入系統態(tài)的功能。系統掛接一個(gè)軟中斷處理函數,所有的系統調用都通過(guò)這個(gè)軟中斷進(jìn)入并以不同的參數值(即系統調用號)來(lái)加以區分。

系統調用的另一種形式是稱(chēng)為CALL-LIB的調用庫機制。此種機制類(lèi)似于windows系統的動(dòng)態(tài)鏈接庫,可以滿(mǎn)足動(dòng)態(tài)加載和更新組件的需要,也是A-RTOS的特點(diǎn)之一。

區間調度機制

ARINC653規定,區間調度模式的主要特征是:1)調度單元是區間;2)區間沒(méi)有優(yōu)先級;3)調度算法是預先確定的,按照固定的周期重復,并且只能由系統集成者進(jìn)行配置。每個(gè)循環(huán)中,至少要為區間分配一個(gè)區間窗口。

在A(yíng)-RTOS中,為了方便系統處理和能更好符合ARINC653規范,對以上規定進(jìn)行了一定程度的修訂:調度單元是區間和系統進(jìn)程;區間具有優(yōu)先級。但這些修訂不影響操作系統區間層POS以及應用程序使用者,所以在外部特性上并不與ARINC653規定違背。

除此之外, A-RTOS還引入兩個(gè)系統區間:Kernel區間和Idle區間。Kernel區間優(yōu)先級最高,用于為整個(gè)系統的運行提供支持;并且一些系統級進(jìn)程,也屬于Kernel區間,方便調度。Idle區間具有最低的優(yōu)先級,用于填充系統時(shí)間。當系統中沒(méi)有其他區間可以運行,就運行Idle區間。

A-RTOS區間的調度原則是首先基于優(yōu)先級調度,對同一優(yōu)先級的區間可使用時(shí)間片輪轉調度或者基于時(shí)間窗的循環(huán)調度策略。

A-RTOS采用兩級調度機制。系統中具有區間的優(yōu)先級位圖和每個(gè)優(yōu)先級對應的就緒鏈表,每個(gè)區間中也包含系統進(jìn)程的優(yōu)先級位圖和對應的就緒鏈表。利用優(yōu)先級位圖和就緒鏈表,可以很容易的實(shí)現對區間和系統進(jìn)程的調度。圖6給出了這種調度模型。

圖6 A-RTOS的區間調度模型

調度模塊首先根據系統中的區間優(yōu)先級位圖和區間就緒鏈表來(lái)進(jìn)行區間調度,被調度到的區間再根據區間內的進(jìn)程優(yōu)先級位圖和進(jìn)程就緒鏈表進(jìn)行系統進(jìn)程的調度。此方法相對于一級調度方式而言,能夠保證調度時(shí)間的確定性,系統調度時(shí)間不會(huì )因為區間和系統進(jìn)程的多少而發(fā)生變化,符合操作系統的定義。

在進(jìn)行基于時(shí)間窗調度時(shí),兩個(gè)系統區間實(shí)際上也會(huì )參與調度。Kernel區間的運行時(shí)間會(huì )計算在區間調度配置表中當前區間的運行時(shí)間上。因此對于某應用區間而言,它的運行時(shí)間實(shí)際上會(huì )包含系統區間的運行。

進(jìn)程池機制

在A(yíng)-RTOS中,進(jìn)程池是指一組由系統進(jìn)行維護的進(jìn)程,這些進(jìn)程能夠為應用提供一組服務(wù)。應用通過(guò)系統提供的調用接口對系統提出應用請求,系統把應用的請求交給進(jìn)程池,進(jìn)程池自動(dòng)選擇一個(gè)空閑進(jìn)程對其進(jìn)行服務(wù),當服務(wù)完畢以后,系統會(huì )回收該系統進(jìn)程。

進(jìn)程池主要應用在時(shí)鐘定時(shí)器服務(wù)、中斷服務(wù)和異步IO操作。

異步信號和異步IO機制

A-RTOS支持異步信號機制,允許在某種情況下COS以異步方式發(fā)送信號到上層的POS。異步信號的一個(gè)典型使用就是異步IO。這是由于在 ARINC653的應用中,POS中的進(jìn)程通過(guò)系統調用產(chǎn)生阻塞性IO請求的時(shí)候,如果IO不是異步的,則此時(shí)該進(jìn)程就會(huì )阻塞,等待系統調用的返回。但是 COS并不知道POS中的應用進(jìn)程的存在,當其中的一個(gè)進(jìn)程阻塞的時(shí)候,整個(gè)區間都會(huì )被阻塞。采用異步IO方式可避免這種情況的發(fā)生。

當應用請求了阻塞性的IO服務(wù)時(shí),A-RTOS會(huì )啟動(dòng)稱(chēng)為一個(gè)系統進(jìn)程來(lái)進(jìn)行應用請求的IO操作,這就是異步IO機制。A-RTOS將這種為實(shí)現異步IO操作而創(chuàng )建的系統進(jìn)程稱(chēng)為worker進(jìn)程。

如圖7,在A(yíng)RINC653的應用中,當POS中的一個(gè)進(jìn)程調用異步IO系統調用時(shí),該系統調用檢查此IO是否為阻塞工作方式,如果是,則創(chuàng )建一個(gè) worker進(jìn)程去完成這個(gè)要求的IO工作,并返回一個(gè)AIO_PENDING值到POS。POS檢查到這個(gè)返回值以后,把正在進(jìn)行異步IO調用的進(jìn)程從就緒隊列取下放到等待隊列,然后進(jìn)行重調度。當worker進(jìn)程完成了要求的IO操作時(shí),即發(fā)送異步信號到POS,從而喚醒原阻塞進(jìn)程。

圖7 異步IO工作流程示意圖

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>