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











評論