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

|
|
|