1. 程式人生 > >4種實時作業系統實時性的分析對比

4種實時作業系統實時性的分析對比

【實時效能主要實現技術】 實時作業系統的實時性是第一要求,需要排程一切可利用的資源完成實時任務。根據響應時間在微秒、毫秒和秒級的不同,可分為強實時、準實時和弱實時三種。強實時系統必須是對即時的事件作出反應,絕對不能錯過事件處理時限。例如測控領域就是要求強或接近強實時系統。在機頂盒、PDA、資訊家電等應用領域,系統負荷較重的時候,允許發生錯過時限的情況而且不會造成太大的危害,準和弱實時系統就可滿足應用。一個強實時的作業系統通常使用以下技術:

佔先式核心 當系統時間響應很重要時,要使用佔先式核心。當前最高優先順序的任務一旦就緒,總能立即得到CPU的控制權,而CPU的控制權是可知的。使用佔先式核心使得任務級響應時間得以最優化。

排程策略分析 任務排程策略是直接影響實時效能的因素。強實時系統和準實時系統的實現區別主要在選擇排程演算法上。選擇基於優先順序排程的演算法足以滿足準實時系統的要求,而且可以提供高速的響應和大的系統吞吐率。當兩個或兩個以上任務有同樣優先順序,通常用時間片輪轉法進行排程。對硬實時系統而言,需要使用的演算法就應該是排程方式簡單,反應速度快的實時排程演算法了。儘管排程演算法多種多樣,但大多由單一比率排程演算法(RMS)和最早期限優先演算法(EDF)變化而來。前者主要用於靜態週期任務的排程,後者主要用於動態排程,在不同的系統狀態下兩種演算法各有優劣。在商業產品中採用的實際策略常常是各種因素的折中。

任務優先順序分配 每個任務都有其優先順序。任務越重要,賦予的優先順序應越高。應用程式執行過程中諸任務優先順序不變,則稱之為靜態優先順序。在靜態優先順序系統中,諸任務以及它們的時間約束在程式編譯時是已知的。反之,應用程式執行過程中,任務的優先順序是可變的,則稱之為動態優先順序。

時間的可確定性 強實時作業系統的函式呼叫與服務的執行時間應具有可確定性。系統服務的執行時間不依賴於應用程式任務的多少。系統完成某個確定任務的時間是可預測的。

【實時效能重要指標】

衡量實時作業系統實時效能的重要指標有:

任務切換時間 當多工核心決定執行另外的任務時,它把正在執行任務的當前狀態(即CPU暫存器中的全部內容)儲存到任務自己的棧區之中。然後把下一個將要執行的任務的當前狀態從該任務的棧中重新裝入CPU的暫存器,並開始下一個任務的執行。這個過程就稱為任務切換。做任務切換所需要的時間取決於CPU有多少暫存器要入棧。CPU的暫存器越多,額外負荷就越重。

中斷響應時間(可遮蔽中斷) 計算機接收到中斷訊號到作業系統作出響應,並完成切換轉入中斷服務程式的時間。對於佔先式核心,要先呼叫一個特定的函式,該函式通知核心即將進行中斷服務,使得核心可以跟蹤中斷的巢狀。佔先式核心的中斷響應時間由下式給出: 中斷響應時間=關中斷的最長時間 +保護CPU內部暫存器的時間 +進入中斷服務函式的執行時間 +開始執行中斷服務例程(ISR)的第一條指令時間

中斷響應時間是系統在最壞情況下響應中斷的時間,某系統100次中有99次在50ms之內響應中斷,只有一次響應中斷的時間是250ms,只能認為中斷響應時間是250ms。

表2列出了部分體現實時效能重要指標的典型值,它們的測試平臺和測試方法不完全相同,影響了資料的可比性,但我們仍可作為參考。

另外,還有系統響應時間(系統發出處理要求到系統給出應答訊號的時間)、最長關中斷時間、非遮蔽中斷響應時間等輔助的衡量指標。

【若干問題】 雖然當今的實時作業系統已日臻完善,但仍有一些問題存在並干擾著強實時的實現。我們應充分的重視,並通過合理的安排程式減少它們的危害。

優先順序反轉 這是實時系統中出現得最多的問題。優先順序反轉是指一個任務等待比它優先順序低的任務釋放資源而被阻塞,如果這時有中等優先順序的就緒任務,阻塞會進一步惡化。它嚴重影響了實時任務的完成。

為防止發生優先順序反轉,一些商業核心(如VxWorks)使用了優先順序繼承技術,當優先順序反轉發生時,優先順序較低的任務被暫時地提高它的優先順序,使得該任務能儘快執行,釋放出優先順序較高的任務所需要的資源。但它也不能完全避免優先順序反轉,只能稱其減輕了優先順序反轉的程度,減輕了優先順序反轉對實時任務完成的影響。

優先權極限是另一種解決方案,系統把每一個臨界資源與1個極限優先權相聯絡,這個極限優先權等於系統此時最高優先權加1。當這個任務退出臨界區後,系統立即把它的優先權恢復正常,從而保證系統不會出現優先權反轉的情況。採用這種方案的另一個有利之處,是僅僅通過改變某個臨界資源的優先順序就可以使多個任務共享這個臨界資源。

任務執行時間的抖動 各種實時核心都有將任務延時若干個時鐘節拍的功能。優先順序的不同、延時請求發生的時間、發出延時請求的任務自身的執行延遲,都會造成被延時任務執行時間不同程度的提前或滯後,稱之為任務執行時間的抖動。可能的解決方案有:a. 增加微處理器的時鐘頻和時鐘節拍的頻率;b. 重新安排任務的優先順序;c. 避免使用浮點運算等。

強實時系統中,我們必須綜合考慮,充分利用各種手段,儘量減少任務執行時間的抖動。

任務劃分 程式在CPU中是以任務的方式在執行,所以我們要將系統的處理框圖轉化為多工流程圖,對處理進行任務劃分。任務劃分存在這樣一對矛盾:如果任務太多,必然增加系統任務切換的開銷;如果任務太少,系統的並行度就降低了,實時性就比較差。在任務劃分時要遵循H.Gomma原則: a. I/O原則:不同的外設執行不同任務; b. 優先順序原則:不同優先順序處理不同的任務; c. 大量運算:歸為一個任務; d. 功能耦合:歸為一個任務; e. 偶然耦合:歸為一個任務; f. 頻率組合:對於週期時間,不同任務處理不同的頻率。

如果我們在具體分析一個系統的時候發生原則衝突的話,則要為每一個原則針對具體的系統設定“權重”,必要的時候可以通過計算“權重”來最終確定如何去劃分任務。

【總結】 VxWorks、mC/OS-II、RT-Linux、QNX都是優秀的強實時作業系統,各有特色:VxWorks的衡量指標值最好;mC/OS-II最短小精悍;RT-Linux支援排程策略的改寫;QNX支援分散式應用。當我們充分理解和掌握它們實現技術、衡量指標的不同,注意所存在的問題,就能在實時性應用中游刃有餘。