RTX與其他實時操作系統的比較
原文地址:http://www.vme.cn/e/action/ShowInfo.php?classid=14&id=502
RTX(Real-Time eXtension)實時操作系統是IntervalZero 公司的一款嵌入式軟件產品。在Windows 下安裝RTX 實時操作系統,拓展了Windows操作系統內核體系,修改並擴展了整個硬件抽象層HAL(Hardware Abstraction Layer),實現獨立的內核驅動模式,形成與Windows 操作系統並列的實時子系統。
1.從通用操作系統到實時操作系統
我們在日常工作學習環境中接觸最多的是通用操作系統如Windows系統、Linux系統,通用操作系統是由分時操作系統發展而來,大部分都支持多用戶和 多進程,負責管理衆多的進程併爲它們分配系統資源。相對而言,實時操作系統則不同。對於實時系統而言,其正確性不僅依賴於系統計算的邏輯結果,還依賴於產 生這些結果的時間。下面我們就分別談談這兩種操作系統的區別:
1) 基本設計原則不同:
分時操作系統的基本設計原則是:儘量縮短系統的平均響應時間並提高系統的吞吐率,在單位時間內爲儘可能多的用戶請求提供服務。
實時操作系統所遵循的最重要的設計原則是:採用各種算法和策略,始終保證系統行爲的可預測性(predictability)。二者的區別在於,實時操 作系統注重的不是系統的平均表現,而是要求每個實時任務在最壞情況下都要滿足其實時性要求,也就是說,實時操作系統注重的是個體表現,更準確地講是個體最 壞情況表現。
2) 任務調度策略不同:
通用操作系統中的任務調度策略一般採用基於優先級的搶先式調度策略,對於優先級相同的進程則採用時間片輪轉調度方式,用戶進程可以通過系統調用動態地調整自己的優先級,操作系統也可根據情況調整某些進程的優先級。
RTX 的任務調度:RTX實時操作系統中並沒有進程的優先級,對於進程中的準備運行的線程有着基於優先級的線程調度隊列。這保證了線程的執行是有順序的,並且符 合“先進先出”的原則,且只有一個優先級。如果一個時間量子被設置爲了0,則線程將會運行完成。如果時間量子被設置爲了其他的值,線程將會運行特定的時 間,然後放棄對CPU的佔用,給到其他同級的線程。
3) 內存管理:
通用的操作系統一般都會採用分頁管理的方式,但這種方式可以保證大部分的任務的執行效率,但其最壞情況的時間不可預測。
默認情況下,RTX的所有進程和內存對象都會被鎖在物理內存當中,以提高其可預測性。
4) 中斷處理:
在通用操作系統中,大部分外部中斷都是開啓的,中斷處理一般由設備驅動程序來完成。由於通用操作系統中的用戶進程一般都沒有實時性要求,而中斷處理程序直接跟硬件設備交互,可能有實時性要求,因此中斷處理程序的優先級被設定爲高於任何用戶進程。
但對於實時操作系統採用上述的中斷處理機制是不合適的。首先,外部中斷是環境向實時操作系統進行的輸入,它的頻度是與環境變化的速率相關的,而與實時操作 系統無關,任務的實時性和可預測性均得不到保證;其次,實時操作系統中的各用戶進程一般都有實時性要求,因此中斷處理程序優先級高於所有用戶進程的優先級 分配方式是不合適的。
在RTX實時操作系統中,中斷處理程序與所以其它任務一樣擁有優先級,調度器根據優先級對處於就緒態的任務和中斷處理程序統一進行處理器調度。中斷線程的優先級也可以更改,並且時間中斷是最高的優先級的中斷。
5) 共享資源的互斥訪問:
通用操作系統一般採用信號量機制來解決共享資源的互斥訪問問題。
如果任務調度採用基於優先級的方式,則傳統的信號量機制在系統運行時很容易造成優先級倒置問題(Priority Inversion),實時性難以得到保證。因此在實時操作系統中,往往對傳統的信號量機制進行了一些擴展,如在RTX實時操作系統中,其調度器提供了3 中系統操作選項(分別爲Priority Promotion with Tiered Demotion、Priority Promotion with Limited Demotion、Disable)來使倒置問題最小化;
6) 輔助工具
實時操作系統額外提供了一些輔助工具,如實時任務在最壞情況下的執行時間估算工具、系統的實時性驗證工具等,可幫助工程師進行系統的實時性驗證工作。
2.RTX與其他實時操作系統
VxWorks、C/OS-II、RT-Linux、QNX是四種當下較流行的實時操作系統。VxWorks、C/OS-II、RT-Linux、QNX 都是優秀的強實時操作系統,各有特色:VxWorks 的衡量指標值最好;C/OS-II 最短小精悍;RT-Linux支持調度策略的改寫;QNX 支持分佈式應用。在性能方面RTX與其相比可謂不相上下,但是RTX與同類的實時操作系統相比最突出的優勢是它與Windows的平臺結合,具有開發調試 效率高與實時性強兩大優點。
首先,如下圖所示,RTX (Real-Time eXtension) 是在不改變Windows XP 內核的前提下,提供一個附加的實時內核模塊。與WindowsXP 內核一起工作,進行實時任務的調度與執行。RTX 爲了在Windows XP 操作系統下實現實時的特徵,利用Windows XP 良好的可擴展體系結構增加了一個實時子系統(RTSS)。RTSS 在概念上與其他Window XP 子系統(例如Win32、POSIX 和DOS) 相似,在RTSS 中,支持自己的執行環境和API。RTX 不同於其他子系統的重要因素在於RTSS 執行它自己的實時線程調度而不是使用Windows XP 的調度,包括Windows XP 管理的中斷和延遲過程調用(DPC)。RTSS 也支內部進程通信(IPC)對象,RTSS 或者Win32 進程都能處理這種對象;這使得實時和非實時程序實現簡單和標準的通信且同步。
其次,RTX 對所有線程執行搶佔的實時調度,支持128 個優先級,嚴格控制各個優先級線程間的切換,並提供與Win32 環境兼容的實時編程接口,支持Win32 的API,實現了一套實時函數包括中斷管理函數和直接硬件訪問函數的擴展。RTX 實時操作系統計時器精度最高可達0.001ns,固定的128 個線程優先級與Windows 內核分離,支持RTX 線程的最低可能的延遲調度。使用RTX 實時操作系統可以滿足控制系統的強實時性的要求。
綜上,RTX爲嵌入式系統開發人員提供了極大的便利,並有效縮減開發週期,降低開發成本。其開發過程簡單易用,實時性能上也得到保證,因此也被更多的實時系統所採用。
3.最新版本的RTX特點
RTX2011新產品的新特點:
- RTX2011支持多至32個處理器的系統,是上一個RTX版本的處理器量的四倍還要多些。RTX工具和通用工具的更新來支持31RTSS處理器的展示。
- RTX2011有6個運行時版本,給到客戶提升的選項來選擇嵌入式系統需要的均衡的多處理功能的級別。
- RTX工具也包含在所有RTX2011運行時編輯中。
- RTX2011支持Windows7,Windows Vista直到SP2的版本,Windows XP直到SP3,Windows Embedded Standard 2009,和Windows Embedded Standard 7。
- RTX2011提供了:RTX和RT-TCP/IP頭文件和庫文件;支持Microsoft Visual Studio(2005、2008和2010);Microsoft WinDbg 擴展;網絡驅動和資源;例子應用和文檔說明和如何開發RTSS應用展示。
- RTX運行時提供了:實時子系統;工具和實用工具集來診斷問題和監視RTX環境的性能。
- 更新的RTX控制面板來提供一個更加詳細的子系統狀態。
- 在RTSS進程中通過FastSemaphores添加了新的輕量級的同步器。
- RTX API DLL爲Windows提供的應用(Rtapi_w32.dll)現在可以動態被加載。
- 加強了的子系統追蹤功能允許其可以從開始一個日誌的對話之前就捕獲到其信息。這個功能也可以通過RTX控制面板或者RTX屬性API來更改。
- 允許在一個64位操作系統上,安裝一個不帶運行時的RTX SDK。
- 可以爲RTX運行時與第三方安裝簡單地整合提供安裝混合模塊。
- Windows Embedded Standard 7已被安裝包支持。Including RTX Runtime with Windows Embedded Standard 7文檔現在已可以作爲一個指導來展示如何利用ICE將RTX包含至其中。
- RTX現在允許最小的進程槽數爲1(之前的最小是10)。