新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 為嵌入式列車控制系統選擇操作系統

        為嵌入式列車控制系統選擇操作系統

        作者: 時間:2012-11-17 來源:網絡 收藏
        搶占式內核

        搶占式內核是實時的一個核心特點,在一個沒有搶占式內核調用的中,系統遇到不可預測的延遲會引起關鍵活動錯過截止時間— 使得系統無法滿足其可靠性的要求。

        這些延遲是由高優先級用戶線程等待完整的內核調用來完成所引起的,即使這個調用是系統中最低級別的進程造成的。更為糟糕的是,當驅動程序或其它系統服務(通常在內核調用時執行)代表客戶線程執行時,優先級信息通常會丟失。

        然而,在一個設計良好的實時中,搶占不會發生的時間窗極其短暫,通常是在納秒級,實時操作系統對中斷被禁止的時間和搶占關閉上規定了一個上限。該上限允許開發者確定最壞情況的延遲并在其設計中做調整。

        為確??深A測性和關鍵活動的及時完成,實時操作系統必須盡可能簡單,以便在通過內核的最長的非搶占式代碼路徑上有一個明確的上限。通過一個包括只用短執行路徑服務的內核和分配給外部進程或線程的密集型操作(例如進程加載)能實現最佳的簡易性。

        優先級繼承

        優先級反轉是一種低優先級線程阻止高優先級線程完成其工作的情況。表3顯示了一個低優先級線程封鎖高優先級線程的例子。這也許是通過同步引起(例如,警報和數據記錄器共享由鎖或信號燈控制的資源,警報等待數據記錄器解除鎖定的資源),或通過警報要求一項目前由數據記錄器使用的服務引起的。

        在圖3的例子中,一個中等優先級的線程(數據聚合器)搶占低優先級的記錄器,但不需要該記錄器使用的資源,這使記錄器保持了資源控制。當警報嘗試運行,它搶占了聚合器并封鎖,但不能訪問仍被記錄器控制的資源。由于警報的封鎖,調度程序尋找能運行的優先級別最高的線程,并運行聚合器,顛倒線程優先級。

        03_opt2.jpeg

        圖3 有了優先級繼承,高優先級線程不會被封鎖

        優先級繼承是一個阻止優先級反轉的機制。它將高優先級線程的優先級分配給低優先級線程直到線程完成。在上面的這個例子中,數據記錄器將繼承警報的優先級,因此不能被數據聚合器搶占。它將完成并恢復到原來的優先級,而且警報將解除封鎖并不受數據聚合器的影響,該機制在圖4中顯示。

        04_opt1.jpeg

        圖4 自適應分區是保護特定線程和線程組的一套規則



        時間分區

        在與安全相關的系統里,如果一個子系統缺乏CPU周期,它提供的服務也許對其它子系統來說是不可用的。例如,在地鐵系統里,如果一個車載ATP系統的通信棧進程在需要時無法響應,該車載ATP系統也許要與軌旁ATP基礎設施承擔通信中斷并開始啟動安全程序,減速或停止列車并中斷上下線的服務。

        時間分區通過硬件或軟件的手段強制分配CPU預算,解決資源饑餓。它可以防止進程或線程壟斷其它進程或線程需要的CPU周期。可能出現兩種類型的分區:靜態和自適應。

        在靜態分區中,任務在區內分組,每個區分配了一定比例的CPU時間。沒有一個任務在任何區內能消耗超過分區預先確定的CPU時間。通過確保每個分區都能得到一定的CPU時間,該限制確保所有的關鍵進程總是能夠保持運行。

        不幸的是,沒有進程能夠使用比分配給它分區限定的更多的CPU周期,即使其它分區沒有使用所有分配給它們的時間。因此,靜態分區白白浪費了CPU周期并降低了系統處理高峰需求的能力。

        與靜態分區一樣,自適應分區為進程或進程組保留了CPU周期。然而,不像靜態分區,自適應分區使用動態調度算法,重新分配未使用的CPU周期給需要的分區。只有當CPU運行時,它才執行分區預算。自適應分區從而讓系統以100% 的能力運行,僅當一個分區以上的進程競爭周期時,它才執行分區預算。

        此外,自適應分區基于預先確定的標準,能在系統運行時調整預算。例如,一個負責制動調整的分區也許在每小時低于20公里的速度時被分配30%的CPU時間,而在更高速度時分配到45%的CPU時間。

        軟件看門狗

        要求可用性保證的系統會實施以硬件為導向的高可用性解決方案和軟件看門狗。

        軟件看門狗是一個監測系統并進行多階段恢復或清除關閉的一個用戶空間進程??撮T狗必須自我檢測并彈性處理內部故障。它如果意外停止,必須通過將其任務移交給鏡像進程從而立即、完全重建其自我狀態。

        如發生故障,看門狗可以執行多種操作以確保系統安全性并恢復。例如,它能夠中止然后重啟故障進程,避免系統重啟?;蛘?,它也能終止該進程和相關進程,初始化硬件到一個安全狀態,然后以協調的方式重新啟動終止的進程?;蛘?,如果故障至關重要,看門狗可以執行可控的關閉或重啟整個系統并發出報警。

        最后,軟件看門狗能夠監測傳統的硬件看門狗不可見的系統事件。例如,硬件看門狗能確保驅動程序正服務于硬件,但可能無法檢測到其他程序是否正確的與該驅動程序溝通。而軟件看門狗可以彌補這一差距,當它檢測到一個內部異常時能夠采取行動。
        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 中宁县| 新河县| 郁南县| 郧西县| 安新县| 定襄县| 通许县| 沅陵县| 开封市| 竹山县| 永丰县| 淮阳县| 襄汾县| 津南区| 浏阳市| 抚顺市| 怀仁县| 军事| 河南省| 和平区| 丰县| 修文县| 乡宁县| 新津县| 和田市| 灯塔市| 通化县| 汨罗市| 信阳市| 康马县| 隆安县| 彭州市| 赫章县| 台中市| 女性| 南华县| 广水市| 大安市| 旅游| 资阳市| 黎城县|