新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 經(jīng)典再續(xù):μC/OS-III

經(jīng)典再續(xù):μC/OS-III

作者:areak 時間:2015-01-12 來源:電子產(chǎn)品世界 收藏

  μC/OS-III相比于μC/OS-II做了很多的改進,是一款全新的內(nèi)核,在效率方面有了很大提升,并且支持任務(wù)的時間片輪轉(zhuǎn)調(diào)度,摒棄了一些不必要的內(nèi)容,如消息郵箱,對于熟悉μC/OS-II的工程師來說,上手μC/OS-III還是比較容易的,先來了解一下μC/OS-III做了哪些具體的改進。

本文引用地址:http://m.butianyuan.cn/article/268018.htm

  一、時鐘節(jié)拍的改進

  在中,任務(wù)可通過調(diào)用延時函數(shù)(如OSTimeDly( )函數(shù))將自己延時掛起一段時間,任務(wù)在延時的過程中會釋放CPU,延時的任務(wù)不占用寶貴的CPU資源,而是由時鐘節(jié)拍服務(wù)統(tǒng)一管理,時鐘節(jié)拍服務(wù)是一個周期性運行的任務(wù),由周期的時鐘節(jié)拍中斷觸發(fā),而時鐘節(jié)拍中斷可由硬件定時器產(chǎn)生,以此來分擔(dān)CPU的工作量。

  在μC/OS-II中,時鐘節(jié)拍服務(wù)是在時鐘節(jié)拍中斷服務(wù)程序中完成的,每次時鐘節(jié)拍服務(wù)都會遍歷整個任務(wù)鏈表,依次處理每個任務(wù),如果該任務(wù)的延時計數(shù)為0,則跳過該任務(wù),如果計數(shù)非0,則進行減1操作,并判斷減1后是否為0,為0則表明延時時間已到,使相關(guān)任務(wù)進入就緒態(tài)。如果系統(tǒng)的任務(wù)數(shù)目較多的話,時鐘節(jié)拍服務(wù)遍歷整個任務(wù)鏈表的時間較長,而且該服務(wù)函數(shù)在中斷中被調(diào)用,因此也會導(dǎo)致中斷執(zhí)行的時間過長,不符合實時操作系統(tǒng)的設(shè)計理念。

  在μC/OS-III中,周期性的硬件定時器通過中斷觸發(fā)中斷服務(wù)函數(shù),在中斷服務(wù)函數(shù)中調(diào)用時鐘節(jié)拍服務(wù)函數(shù),但是該時鐘節(jié)拍服務(wù)函數(shù)不需要遍歷整個任務(wù)鏈表,只是發(fā)送一個信號量,即可結(jié)束中斷,時鐘節(jié)拍任務(wù)接收該信號量,恢復(fù)運行,處理延時函數(shù),為了提高時鐘節(jié)拍的處理速度,還采用了哈希散列表機制來管理任務(wù),使得查找速度更加高效合理。

  二、任務(wù)調(diào)度的改進

  在μC/OS-II中,任務(wù)調(diào)度是完全基于優(yōu)先級的,每個任務(wù)都有不同的優(yōu)先級,不允許2個任務(wù)具有相同的優(yōu)先級,并且支持的任務(wù)數(shù)量是有限制的。

  在μC/OS-III中,可以支持任意數(shù)目的任務(wù)和優(yōu)先級,用戶根據(jù)實際情況來定,當(dāng)然在實時操作系統(tǒng)中,要盡可能的精簡任務(wù)數(shù)目,在μC/OS-III中,增加了任務(wù)的時間片輪轉(zhuǎn)調(diào)度算法,也就是說不同的任務(wù)允許具有相同的優(yōu)先級,因此,任務(wù)的數(shù)量就可以不受優(yōu)先級數(shù)量的限制了,每一個優(yōu)先級的任務(wù)數(shù)量可以有多個,同一優(yōu)先級的任務(wù)根據(jù)實際需要分配執(zhí)行時間,時間到時釋放CPU,使得其它任務(wù)得以執(zhí)行,如此循環(huán)往復(fù)。除此之外,還對任務(wù)優(yōu)先級查找算法進行了改進,在此不再詳述。

  三、信號量的改進

  在多任務(wù)實時操作系統(tǒng)中,信號量是最基本最常用的機制,用來實現(xiàn)任務(wù)之間的通信和同步、任務(wù)和中斷之間的通信和同步以及對共享資源的訪問,在μC/OS-II中,提供了基本的信號量創(chuàng)建、等待和釋放等操作。

  在μC/OS-III中,對信號量的使用增加了一些可選參數(shù),如非阻塞等待、釋放但不進行任務(wù)調(diào)度等操作,具有較高的靈活性。更為方便和重要的是,在μC/OS-III中增加了任務(wù)內(nèi)嵌的信號量,用戶無需創(chuàng)建信號量便可和其它任務(wù)通信,使用起來比普通信號量更加簡單高效。比如兩個任務(wù)之間的數(shù)據(jù)傳送很明確,任務(wù)A接收數(shù)據(jù)完成后,只有任務(wù)B來執(zhí)行數(shù)據(jù)的處理,也就是說只有一個任務(wù)等待任務(wù)A的信號量,而且任務(wù)A知道要將信號量發(fā)送給哪個任務(wù),便可以使用內(nèi)嵌信號量來進行通信和同步。

  四、小結(jié)

  以上僅列舉了幾點在μC/OS-III中比較重要的改進,μC/OS-III實時內(nèi)核無論在效率、穩(wěn)定性、用戶使用靈活性方面都做了重要的改進,是一款全新的實時內(nèi)核,詳見書籍《嵌入式實時操作系統(tǒng)μC/OS-III》。



關(guān)鍵詞: RTOS μC/OS-III μC/OS-II

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉