新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > μC/OS2Ⅱ中優先級調度算法的改進及實現

        μC/OS2Ⅱ中優先級調度算法的改進及實現

        作者: 時間:2012-04-06 來源:網絡 收藏

        引 言

        實時系統是對時間有特殊要求的系統,系統運行結果的正確性不僅要求系統的邏輯正確,而且依賴于運行結果產生的時間。尤其是硬實時系統,具有明確的實時參數,如果在某個限定的時刻前不能完成任務將導致整個應用的失敗。μC/OS2 Ⅱ是一個為實時嵌入式應用而設計的搶占式多任務的實時操作系統,全部μC/OS2Ⅱ的函數調用與服務執行時間是可知的。在μC/OS2Ⅱ中,涉及到的重要概念有實時內核、任務間的通信、任務切換與調度、任務分配、任務間的競爭、死鎖等。其中,內核負責管理各個任務,為每個任務分配CPU時間,并負責任務之間的通信。μC/OS2Ⅱ內核最多可以管理64個任務,其中系統保留了8個任務,用戶最多可以有56個應用任務。因此,當工程的復雜性增大,在μC /OS2Ⅱ操作系統上運行的任務數目不斷增加時,如果任務數目超過64個,就必須換用其他的開發平臺,這樣就可能造成大量的前期開發工作作廢。我們考慮到這種情況,根據μC/OS2Ⅱ本身的任務可擴展性,在原有的調度算法基礎上,提出了兩種可行的大量增加可管理任務的算法。

        基于的搶占式調度算法

        當系統響應時間很重要時,要使用占先式內核。μC/OS2Ⅱ的實時內核就是占先式內核。其特點是能夠確定最高優先級的就緒任務什么時候可以執行,可以得到CPU的控制權,從而使任務級響應時間得以最優化。相應地,μC/OS2Ⅱ內核采用的是基于優先級的搶占式調度策略。系統為每個任務分配一個優先級,最高優先級的任務一旦就緒,總能得到CPU的控制權。當一個運行著的任務使一個比它優先級高的任務進入了就緒態,當前任務的CPU使用權就被剝奪了,或者說被掛起了,那個高優先級的任務立刻得到了CPU的控制權。

        μC/OS2Ⅱ中優先級調度算法的第一種改進方法

        為增加μC/OS2Ⅱ內核可管理任務的數目,該算法利用μC/OS2Ⅱ原有的優先級判定表格,重新定義了存放任務優先級的字節,并重新建立任務,把64個任務擴充到256個任務,最后給出了新的最高就緒任務的查找算法。

        對優先級字節的改動和規定

        在 μC/OS2Ⅱ中,原有的基于64個的優先級調度算法分別用3個比特位來定位任務優先級在(readylist) 中的行和列,即0~2位標識該任務在總中的列信息,3~5位標識該任務在就緒表中的行信息。因此,存放任務優先級的字節中8個比特位只會用到6位,而有兩個比特位空閑。該算法直接擴展定位就緒任務優先級在就緒表中位置的行和列信息的比特位,使其能夠區分256個不同的任務優先級。擴展后的算法規定任務優先級字節的定義如圖1所示。


        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 即墨市| 桃江县| 长治市| 绵竹市| 高要市| 句容市| 神木县| 鹤峰县| 于都县| 冕宁县| 聂拉木县| 西乌珠穆沁旗| 方城县| 郁南县| 雷山县| 宾川县| 鹤庆县| 梓潼县| 舞钢市| 崇阳县| 桐庐县| 和林格尔县| 金溪县| 长海县| 吐鲁番市| 深水埗区| 永昌县| 吉首市| 甘南县| 永德县| 明光市| 文安县| 新丰县| 台南县| 崇明县| 揭西县| 思南县| 彰化市| 新巴尔虎右旗| 工布江达县| 和林格尔县|