|
MSP430F149的實時多任務(wù)操作系統(tǒng)該如何使用 |
|
|
1 RTOS的基本概念 實時多任務(wù)操作系統(tǒng)(RTOS-Real Time Operating System)是根據(jù)操作系統(tǒng)的工作特性而言的。實時是指物理進(jìn)程的真實時間。實時操作系統(tǒng)是指具有實時性,能支持實時控制系 統(tǒng)工作的操作系統(tǒng)。首要任務(wù)是調(diào)度一切可利用的資源完成實時控制任務(wù),重要特點是要滿足對時間的限制和要求。
實時操作系統(tǒng)中的任務(wù)(Task)有四種狀態(tài):運行(Executing),就緒(Ready),掛起(Suspended),休眠(Dormant)。
運行:獲得CPU控制權(quán)。
就緒:進(jìn)入任務(wù)等待隊列。通過調(diào)度轉(zhuǎn)為運行狀態(tài)。
掛起:任務(wù)發(fā)生阻塞,移出任務(wù)等待隊列,等待系統(tǒng)實時事件的發(fā)生而喚醒。從而轉(zhuǎn)為就 緒或運行。
休眠:任務(wù)完成或錯誤等原因被清除的任務(wù)。也可以認(rèn)為是系統(tǒng)中不存在了的任務(wù)。
某一時刻,系統(tǒng)中只能有一個任務(wù)在運行狀態(tài)。各任務(wù)按級別通過時間片分別獲得對CPU的訪問權(quán)。
RTOS內(nèi)核按照任務(wù)的調(diào)度機制可以分為兩種:一種是占先式內(nèi)核,一種是非占先式內(nèi)核。
占先式內(nèi)核:當(dāng)一個低優(yōu)先級的任務(wù)正在運行時,一個高優(yōu)先級的任務(wù)就緒,那么RTOS就會把低優(yōu)先級的任務(wù)掛起,來運行高優(yōu)先級的任務(wù)。等高優(yōu)先級的任務(wù)執(zhí)行了一個循環(huán)掛起之后,再回到低優(yōu)先級任務(wù)的斷點繼續(xù)運行。也就是說,任務(wù)的優(yōu)先級越高,響應(yīng)起來越及時。
非占先式內(nèi)核:當(dāng)一個低優(yōu)先級的任務(wù)在運行時,一個高優(yōu)先級的任務(wù)就緒,RTOS不會把CPU切換給高優(yōu)先級的任務(wù),必須等低優(yōu)先級的任務(wù)執(zhí)行了一個循環(huán)掛起之后,再由RTOS根據(jù)所有就緒任務(wù)的優(yōu)先級判斷將CPU切到哪個任務(wù)。
絕大多數(shù)商業(yè)RTOS, 以及著名的開放源碼的uC/OS-II操作系統(tǒng),都采用的是占先式內(nèi)核,它的優(yōu)點是實時性要比非占先式內(nèi)核高。
在RTOS中,一般情況下,每個任務(wù)都一無限循環(huán),每循環(huán)一次,任務(wù)掛起一段時間,以供調(diào)度程序把這段時間交給優(yōu)先級更高的其它就緒任務(wù),讓其它任務(wù)運行(如圖1)。當(dāng)所有任務(wù)都掛起時,RTOS把任務(wù)切到空閑任務(wù)來執(zhí)行。

|
|
|