新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 提高實時操作系統的實時性能和可靠性策略

        提高實時操作系統的實時性能和可靠性策略

        作者: 時間:2009-05-06 來源:網絡 收藏
        對很多嵌入式系統來說,一個設計良好的可以讓開發工程師把握系統執行任何任務或響應任何關鍵事件的時間,滿足系統實時性要求。為了理解如何通過系統調度策略實現實時性要求,本文介紹了搶占式調度、可搶占的內核、優先級繼續和中斷處理等概念。

        在設計工業控制系統或醫療設備時,大部分工程師和系統設計工程師會認為采用是必需的。然而,網際路由器、車載娛樂系統和多媒體設備等普通應用還需要采用嗎?像Linux或Windows這樣的通用操作系統是否就能勝任呢?通常,這些產品需要采用RTOS,但是這個問題經常直到設計階段的后期才能意識到。

        RTOS對于很多嵌入式系統來說不但是有益的,而且也是必要的,熟悉到這一點很重要。例如,一個播放如MPEG格式電影的設備,假如依靠軟件來實現其整個內容傳輸,可能會出現用戶難以接受的高丟幀率。然而,通過使用RTOS,系統設計工程師能夠準確地控制軟件過程的執行順序,從而保證按照給定的媒體速率進行播放。上述大部分情況適用于用戶希望對輸入做出立即響應的系統。通過RTOS,開發人員能夠保證由用戶的操作總能得到及時的響應,除非一個更重要的操作必須首先執行。

        總之,一個好的RTOS支持開發人員控制系統執行任何任務或對任何重要事件做出反應的時間,并且能夠以一種可以猜測并且完全一致的形式滿足任務執行的最終期限要求。但是,假如RTOS崩潰,這些最終期限就不能被滿足。因此,RTOS必須提供高度的可靠性。非凡是它必須提供在不需要重啟的情況下,從軟件故障中快速并智能恢復的機制。

        搶占式調度

        在像Linux這樣的通用操作系統中,在對線程和進程的占用上采用了“公平”調度策略。這樣的策略能夠提供良好的整體表現,但是不能保證高優先級、對時間要求嚴格的線程將優先于低優先級的線程執行。事實上,操作系統有時甚至會中斷高優先級的線程來為低優先級線程提供時間。其結果可能造成對時間要求嚴格的線程很輕易地錯過它們的最終期限,甚至在一個高速的高端處理器上運行時也會出現這種情況。

        而在RTOS中,線程按照其優先級順序執行。假如一個高優先級的線程預備運行時,它將在一個短的、有限時間間隔內從任何可能正在運行的低優先級進程接管。另外,高優先級的線程能夠不被中斷地運行,直到它已經完成了需要做的事情-當然是在不被更高優先級進程搶占的前提下。這種方法就是搶占式調度,保證了高優先級線程始終滿足其最終期限,而不管有多少其它線程正在競爭CPU時間。

        通過合理地控制線程優先級,開發者能顯著地提高很多對用戶非常重要的應用響應速度。然而,控制優先級可能是一把雙刃劍,當使用不當時它可能會潛在地導致低優先級的進程不能得到CPU時間。保證高優先級的進程和線程的同時確保不會使其它進程處于“饑餓”狀態的關鍵是要對它們的執行進行限制,通過對執行進行調整或在響應加載的過程中進行控制,開發人員能夠限制這些活動消耗的CPU時間比例,并支持低優先級進程獲得對CPU的共享。

        優先級控制能夠使很多應用受益,包括像前面提到的媒體播放器。媒體播放器需要實現正常播放所要求的速率。在這種限制之下,一個讀線程和一個顯示線程可以被設計成依靠一個可編程的定時器來喚醒,緩沖或顯示一幀后進入睡眠狀態,直到下一個定時觸發。這提供了一種調整機制,支持高于正常用戶活動而又低于關鍵系統功能的優先級設置。換句話說,假如沒有更重要的任務預備運行,媒體播放將始終以給定的媒體速率執行。

        最壞情形

        搶占式調度僅在高優先級的線程在一個短的、有限時間段內搶占低優先級線程的情況下有效。否則,系統將不可能猜測要花費多長時間來執行一個給定的操作。因此,任何銷售進程模式的RTOS的供給商都必須提供針對下面兩種時間間隔提供最壞情形:線程切換時間,即當兩個線程處于同一進程的情況下,從執行一個線程的最后一條指令到執行下一個被調度線程的第一條指令所經過的時間;前后關系切換時間,其定義同上,但僅針對兩個線程處于不同進程的情況。

        可以將線程看作是最小的“執行單元”,而將進程看作是一個或多個線程的“容器”,進程定義了線程將要在其中執行的地址空間。顯然,最壞情形的前后關系切換時間將比最壞情形的線程切換時間要慢,盡管在一個好的RTOS設計中差別可能是微不足道的。

        將所有的線程放在幾個大的進程中將是錯誤的,因為線程提供的切換速度更快。雖然線程能實現并行處理優勢因而適合于某些設計,但將一個應用分成多個內存保護的進程使得代碼更輕易調試,提供了更好的錯誤隔離和恢復能力,并答應系統進行新功能的動態升級。

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 靖江市| 和静县| 崇仁县| 江都市| 曲阳县| 乐山市| 张家港市| 昌江| 都江堰市| 万全县| 房产| 平果县| 南投市| 宿松县| 丹东市| 呈贡县| 广南县| 黎城县| 太仓市| 锡林郭勒盟| 大庆市| 清徐县| 马公市| 湛江市| 徐州市| 图片| 吴旗县| 泰和县| 石台县| 中宁县| 上饶县| 六枝特区| 如东县| 大渡口区| 长沙市| 峨山| 红桥区| 太仓市| 萍乡市| 固原市| 青铜峡市|