【實時性能主要實作技術】
實時作業系統的實時性是第一要求,需要排程一切可利用的資源完成實時任務。根據響應時間在微秒、毫秒和秒級的不同,可分為強實時、準實時和弱實時三種。強實時系統必須是對即時的事件作出反應,絕對不能錯過事件處理時限。例如測控領域就是要求強或接近強實時系統。在機頂盒、PDA、資訊家電等應用領域,系統負荷較重的時候,允許發生錯過時限的情況而且不會造成太大的危害,準和弱實時系統就可滿足應用。一個強實時的作業系統通常使用以下技術:
● 占先式核心
當系統時間響應很重要時,要使用占先式核心。目前最高優先級的任務一旦就緒,總能立即得到CPU的控制權,而CPU的控制權是可知的。使用占先式核心使得任務級響應時間得以最優化。
● 排程政策分析
任務排程政策是直接影響實時性能的因素。強實時系統和準實時系統的實作差別主要在選擇排程算法上。選擇基于優先級排程的算法足以滿足準實時系統的要求,而且可以提供高速的響應和大的系統吞吐率。當兩個或兩個以上任務有同樣優先級,通常用時間片輪轉法進行排程。對硬實時系統而言,需要使用的算法就應該是排程方式簡單,反應速度快的實時排程算法了。盡管排程算法多種多樣,但大多由單一比率排程算法(RMS)和最早期限優先算法(EDF)變化而來。前者主要用于靜态周期任務的排程,後者主要用于動态排程,在不同的系統狀态下兩種算法各有優劣。在商業産品中采用的實際政策常常是各種因素的折中。
● 任務優先級配置設定
每個任務都有其優先級。任務越重要,賦予的優先級應越高。應用程式執行過程中諸任務優先級不變,則稱之為靜态優先級。在靜态優先級系統中,諸任務以及它們的時間限制在程式編譯時是已知的。反之,應用程式執行過程中,任務的優先級是可變的,則稱之為動态優先級。
● 時間的可确定性
強實時作業系統的函數調用與服務的執行時間應具有可确定性。系統服務的執行時間不依賴于應用程式任務的多少。系統完成某個确定任務的時間是可預測的。
【實時性能重要名額】
衡量實時作業系統實時性能的重要名額有:
● 任務切換時間
當多任務核心決定運作另外的任務時,它把正在運作任務的目前狀态(即CPU寄存器中的全部内容)儲存到任務自己的棧區之中。然後把下一個将要運作的任務的目前狀态從該任務的棧中重新裝入CPU的寄存器,并開始下一個任務的運作。這個過程就稱為任務切換。做任務切換所需要的時間取決于CPU有多少寄存器要入棧。CPU的寄存器越多,額外負荷就越重。
● 中斷響應時間(可屏蔽中斷)
計算機接收到中斷信号到作業系統作出響應,并完成切換轉入中斷服務程式的時間。對于占先式核心,要先調用一個特定的函數,該函數通知核心即将進行中斷服務,使得核心可以跟蹤中斷的嵌套。占先式核心的中斷響應時間由下式給出:
中斷響應時間=關中斷的最長時間
+保護CPU内部寄存器的時間
+進入中斷服務函數的執行時間
+開始執行中斷服務例程(ISR)的第一條指令時間
中斷響應時間是系統在最壞情況下響應中斷的時間,某系統100次中有99次在50ms之内響應中斷,隻有一次響應中斷的時間是250ms,隻能認為中斷響應時間是250ms。
表2列出了部分展現實時性能重要名額的典型值,它們的測試平台和測試方法不完全相同,影響了資料的可比性,但我們仍可作為參考。
另外,還有系統響應時間(系統發出處理要求到系統給出應答信号的時間)、最長關中斷時間、非屏蔽中斷響應時間等輔助的衡量名額。
【若幹問題】
雖然當今的實時作業系統已日臻完善,但仍有一些問題存在并幹擾着強實時的實作。我們應充分的重視,并通過合理的安排程式減少它們的危害。
● 優先級反轉
這是實時系統中出現得最多的問題。優先級反轉是指一個任務等待比它優先級低的任務釋放資源而被阻塞,如果這時有中等優先級的就緒任務,阻塞會進一步惡化。它嚴重影響了實時任務的完成。
為防止發生優先級反轉,一些商業核心(如VxWorks)使用了優先級繼承技術,當優先級反轉發生時,優先級較低的任務被暫時地提高它的優先級,使得該任務能盡快執行,釋放出優先級較高的任務所需要的資源。但它也不能完全避免優先級反轉,隻能稱其減輕了優先級反轉的程度,減輕了優先級反轉對實時任務完成的影響。
優先權極限是另一種解決方案,系統把每一個臨界資源與1個極限優先權相聯系,這個極限優先權等于系統此時最高優先權加1。當這個任務退出臨界區後,系統立即把它的優先權恢複正常,進而保證系統不會出現優先權反轉的情況。采用這種方案的另一個有利之處,是僅僅通過改變某個臨界資源的優先級就可以使多個任務共享這個臨界資源。
● 任務執行時間的抖動
各種實時核心都有将任務延時若幹個時鐘節拍的功能。優先級的不同、延時請求發生的時間、發出延時請求的任務自身的運作延遲,都會造成被延時任務執行時間不同程度的提前或滞後,稱之為任務執行時間的抖動。可能的解決方案有:a. 增加微處理器的時鐘頻和時鐘節拍的頻率;b. 重新安排任務的優先級;c. 避免使用浮點運算等。
強實時系統中,我們必須綜合考慮,充分利用各種手段,盡量減少任務執行時間的抖動。