新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 淺談嵌入式實時操作系統(tǒng)設計

淺談嵌入式實時操作系統(tǒng)設計

作者: 時間:2014-07-28 來源:網(wǎng)絡 收藏

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

本文引用地址:http://butianyuan.cn/article/256147.htm

  區(qū)間調(diào)度機制

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

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

  除此之外, A-RTOS還引入兩個系統(tǒng)區(qū)間:Kernel區(qū)間和Idle區(qū)間。Kernel區(qū)間優(yōu)先級最高,用于為整個系統(tǒng)的運行提供支持;并且一些系統(tǒng)級進程,也屬于Kernel區(qū)間,方便調(diào)度。Idle區(qū)間具有最低的優(yōu)先級,用于填充系統(tǒng)時間。當系統(tǒng)中沒有其他區(qū)間可以運行,就運行Idle區(qū)間。

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

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

  

?

  圖6 A-RTOS的區(qū)間調(diào)度模型

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

  在進行基于時間窗調(diào)度時,兩個系統(tǒng)區(qū)間實際上也會參與調(diào)度。Kernel區(qū)間的運行時間會計算在區(qū)間調(diào)度配置表中當前區(qū)間的運行時間上。因此對于某應用區(qū)間而言,它的運行時間實際上會包含系統(tǒng)區(qū)間的運行。

  進程池機制

  在A-RTOS中,進程池是指一組由系統(tǒng)進行維護的進程,這些進程能夠為應用提供一組服務。應用通過系統(tǒng)提供的調(diào)用接口對系統(tǒng)提出應用請求,系統(tǒng)把應用的請求交給進程池,進程池自動選擇一個空閑進程對其進行服務,當服務完畢以后,系統(tǒng)會回收該系統(tǒng)進程。

  進程池主要應用在時鐘定時器服務、中斷服務和異步IO操作。

  異步信號和異步IO機制

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

  當應用請求了阻塞性的IO服務時,A-RTOS會啟動稱為一個系統(tǒng)進程來進行應用請求的IO操作,這就是異步IO機制。A-RTOS將這種為實現(xiàn)異步IO操作而創(chuàng)建的系統(tǒng)進程稱為worker進程。

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

  

?

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


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉