淺談嵌入式實(shí)時(shí)操作系統設計
系統調用的另一種形式是稱(chēng)為CALL-LIB的調用庫機制。此種機制類(lèi)似于windows系統的動(dòng)態(tài)鏈接庫,可以滿(mǎn)足動(dòng)態(tài)加載和更新組件的需要,也是A-RTOS的特點(diǎn)之一。
本文引用地址:http://dyxdggzs.com/article/256147.htm區間調度機制
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ā)生變化,符合實(shí)時(shí)操作系統的定義。
在進(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工作流程示意圖
評論