一、任務:一個任務,也叫一個線程,是一個簡單程序,改程序可以認為CPU完全只屬于自己。每個任務都是整個應用的某一部分,
每個任務被賦予一定的優(yōu)先級,有它自己的一套CPU寄存器和??臻g。
二、多任務:多任務運行的實現(xiàn)實際是靠CPU在許多任務之間轉換、調度。CPU輪流服務于一系列任務中的某一個。
三、任務狀態(tài):每個任務都是一個無限循環(huán)。每個任務都處在以下5種狀態(tài)之一:
1)睡眠態(tài):任務只是以代碼的形式駐留在程序空間(ROM或RAM),還沒有交給操作系統(tǒng)管理時的情況叫做睡眠態(tài)(也稱休眠態(tài))。
簡單說,任務在沒有被配備任務控制塊或被剝奪了任務控制塊時的狀態(tài)叫做任務的睡眠態(tài)。
2)就緒態(tài):如果系統(tǒng)為任務配備了任務控制塊且在任務就續(xù)表中進行了就緒登記,則任務就具備了運行的充分條件,
這時任務的狀態(tài)就叫做就緒態(tài)。
3)運行態(tài):處于就緒態(tài)的任務如果經(jīng)調度器的判斷獲得了CPU的使用權,則任務就進入運行狀態(tài)。
注:任何時刻只能有一個任務處于運行態(tài),就緒的任務只有當所有優(yōu)先級高于本任務的任務都轉為等待狀態(tài)時,才能進入運行態(tài)。
4)等待態(tài):正在運行的任務,需要等待一段時間或需要等待一個事件發(fā)生再運行時,該任務就會把CPU的使用權讓給其它任務而使任務進入等待態(tài)(也稱阻塞態(tài))。
5)中斷態(tài):一個正在運行的任務一旦響應中斷申請就會中止運行而去執(zhí)行中斷服務程序,這時任務的狀態(tài)叫做中斷服務狀態(tài)(也稱掛起態(tài))。
四、任務不是普通的C語言函數(shù),因此不能被主函數(shù)或其它函數(shù)調用,主函數(shù)只負責創(chuàng)建和啟動它們,而由操作系統(tǒng)負責來調度運行它們。
五、uC/OS-II中預定義了兩個為應用程序服務的系統(tǒng)任務:空閑任務和統(tǒng)計任務。
其中空閑任務是每個應用程序必須使用的,而統(tǒng)計任務是應用程序根據(jù)實際需要來選擇使用的。
六、任務的組成:任務控制塊、任務代碼、任務堆棧。
七、創(chuàng)建任務的函數(shù):
INT8U OSTaskCreate (
void (*task)(void *pd),//定義一個函數(shù)指針
void *pdata,//傳遞給任務的參數(shù)
OS_STK *ptos,//任務堆棧棧頂?shù)闹羔?/p>
INT8U prio//指定任務優(yōu)先級的參數(shù)
)
參: 任哲 《嵌入式實時操作系統(tǒng)uC/OS-II原理及應用》
參: 盧有亮 《嵌入式實時操作系統(tǒng)uC/OS原理與實踐》





