歡迎您光臨本站 登入註冊首頁

概述

   20世紀70年代以來嵌入式系統的硬體和軟體技術的飛速進步,使得嵌入式應用得到了蓬勃發展,在這些應用中實時操作系統起著決定性的作用。   ……

    20世紀70年代以來嵌入式系統的硬體和軟體技術的飛速進步,使得嵌入式應用得到了蓬勃發展,在這些應用中實時操作系統起著決定性的作用。
    在複雜測控應用中,必須使用對實時性要求非常高的實時操作系統。例如在工業控制、交通管理、機器人、航空航天、武器裝備等領域,系統事件的響應如果不能準時或超時,就可能導致巨大的損失和災難。因而,選擇操作系統時,對實時性的仔細考慮至關重要。本文從實時性的角度細緻的分析對比了適用於此類有苛刻實時性要求的4 種操作系統—— VxWorks、uC/OS II、RT-Linux、QNX,為系統選型提供一定參考。

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

  • 佔先式內核
        當系統時間響應很重要時,要使用佔先式內核。當前最高優先順序的任務一旦就緒,總能立即得到CPU 的控制權,而CPU 的控制權是可知的。使用佔先式內核使得任務級響應時間得以最優化。
  • 調度策略分析
        任務調度策略是直接影響實時性能的因素。強實時系統和准實時系統的實現區別主要在選擇調度演算法上。選擇基於優先順序調度的演算法足以滿足准實時系統的要求,而且可以提供高速的響應和大的系統吞吐率。當兩個或兩個以上任務有同樣優先順序,通常用時間片輪轉法進行調度。對硬實時系統而言,需要使用的演算法就應該是調度方式簡單,反應速度快的實時調度演算法了。儘管調度演算法多種多樣,但大多由單一比率調度演算法(RMS)和最早期限優先演算法(EDF)變化而來。前者主要用於靜態周期任務的調度,後者主要用於動態調度,在不同的系統狀態下兩種演算法各有優劣。在商業產品中採用的實際策略常常是各種因素的折中。
  • 任務優先順序分配
        每個任務都有其優先順序。任務越重要,賦予的優先順序應越高。應用程序執行過程中諸任務優先順序不變,則稱之為靜態優先順序。在靜態優先順序系統中,諸任務以及它們的時間約束在程序編譯時是已知的。反之,應用程序執行過程中,任務的優先順序是可變的,則稱之為動態優先順序。
  • 時間的可確定性
        強實時操作系統的函數調用與服務的執行時間應具有可確定性。系統服務的執行時間不依賴於應用程序任務的多少。系統完成某個確定任務的時間是可預測的。

表1 實時嵌入式系統所使用技術的異同
  Vxworks uC/OS II RT-Linux2.0 QNX6
供應商 Wind River  Micrium FSMlabs  Quanturm
佔先式內核  是  是  是  是
調度演算法 優先順序時間片輪轉 優先順序 優先順序
最短時限優先
優先順序
先進先出循環式
優先順序分配  動態  動態 靜態(默認)  動態
優先順序繼承
優先順序數 256 64 不限 32
時間確定性

 實時性能重要指標
    衡量實時操作系統實時性能的重要指標有:

  • 任務切換時間
        當多任務內核決定運行另外的任務時,它把正在運行任務的當前狀態(即CPU 寄存器中的全部內容)保存到任務自己的棧區之中。然後把下一個將要運行的任務的當前狀態從該任務的棧中重新裝入CPU 的寄存器,並開始下一個任務的運行。這個過程就稱為任務切換。做任務切換所需要的時間取決於CPU 有多少寄存器要入棧。CPU 的寄存器越多,額外負荷就越重。
  • 中斷響應時間(可屏蔽中斷)
        計算機接收到中斷信號到操作系統作出響應,並完成切換轉入中斷服務程序的時間。對於佔先式內核,要先調用一個特定的函數,該函數通知內核即將進行中斷服務,使得內核可以跟蹤中斷的嵌套。佔先式內核的中斷響應時間由下式給出:
    中斷響應時間=關中斷的最長時間
                             +保護CPU 內部寄存器的時間
                             +進入中斷服務函數的執行時間
                             +開始執行中斷服務常式(ISR)的第一條指令時間
        中斷響應時間是系統在最壞情況下響應中斷的時間,某系統100次中有99次在50ms之內響應中斷,只有一次響應中斷的時間是250 ms,只能認為中斷響應時間是250ms。

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

表2 系統實時性能重要指標的典型值
  VxWorks uC/OS II RT-Linux2.0 QNX6
硬體平台  MC68000 33MHz 486 60MHz 486 33MHz 486
任務切換 3.8us <9us  不詳  12.57us
中斷響應 <3us <7.5us  25us 7.54us

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

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

  • 優先順序反轉
        這是實時系統中出現得最多的問題。優先順序反轉是指一個任務等待比它優先順序低的任務釋放資源而被阻塞,如果這時有中等優先順序的就緒任務,阻塞會進一步惡化。它嚴重影響了實時任務的完成。
        為防止發生優先順序反轉,一些商業內核(如VxWorks)使用了優先順序繼承技術,當優先順序反轉發生時,優先順序較低的任務被暫時地提高它的優先順序,使得該任務能儘快執行,釋放出優先順序較高的任務所需要的資源。但它也不能完全避免優先順序反轉,只能稱其減輕了優先順序反轉的程度,減輕了優先順序反轉對實時任務完成的影響。
        優先權極限是另一種解決方案,系統把每一個臨界資源與1個極限優先權相聯繫,這個極限優先權等於系統此時最高優先權加1。當這個任務退出臨界區后,系統立即把它的優先權恢復正常,從而保證系統不會出現優先權反轉的情況。採用這種方案的另一個有利之處,是僅僅通過改變某個臨界資源的優先順序就可以使多個任務共享這個臨界資源。
  • 任務執行時間的抖動
        各種實時內核都有將任務延時若干個時鐘節拍的功能。優先順序的不同、延時請求發生的時間、發出延時請求的任務自身的運行延遲,都會造成被延時任務執行時間不同程度的提前或滯后,稱之為任務執行時間的抖動。可能的解決方案有:
    a. 增加微處理器的時鐘頻和時鐘節拍的頻率;
    b. 重新安排任務的優先順序;
    c. 避免使用浮點運算等。
        強實時系統中,我們必須綜合考慮,充分利用各種手段,盡量減少任務執行時間的抖動。
  • 任務劃分
        程序在CPU 中是以任務的方式在運行,所以我們要將系統的處理框圖轉化為多任務流程圖,對處理進行任務劃分。任務劃分存在這樣一對矛盾:如果任務太多,必然增加系統任務切換的開銷;如果任務太少,系統的并行度就降低了,實時性就比較差。在任務劃分時要遵循H.Gomma 原則:
    a. I/O原則:不同的外設執行不同任務;
    b. 優先順序原則:不同優先順序處理不同的任務;
    c. 大量運算:歸為一個任務;
    d. 功能耦合:歸為一個任務;
    e. 偶然耦合:歸為一個任務;
    f. 頻率組合:對於周期時間,不同任務處理不同的頻率。
        如果我們在具體分析一個系統的時候發生原則衝突的話,則要為每一個原則針對具體的系統設定“權重”,必要的時候可以通過計算“權重”來最終確定如何去劃分任務。

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


[admin via 研發互助社區 ] 4 種實時操作系統實時性的分析對比已經有1850次圍觀

http://cocdig.com/docs/show-post-42231.html