ucos II 核心學習之一 任務狀態及任務控制塊

2021-06-27 10:08:19 字數 1183 閱讀 1572

ucos ii 核心學習之一:任務狀態及任務控制塊

乙個任務被建立之後,可以處於以下五種狀態之一。

這五種狀態分別是:

1.       睡眠狀態

2.       就緒狀態

3.       等待狀態

4.       中斷服務狀態

5.       執行狀態

下面簡單介紹下各狀態的含義及各狀態切換的方法。

睡眠狀態:睡眠態(dormant)指任務駐留在程式空間之中,還沒有交給ucos ii管理,把任務交給ucos ii是通過呼叫下述兩個函式之一:ostaskcreate()或ostaskcreateext()。當任務一旦建立,這個任務就進入就緒態準備執行。任務的建立可以是在多工執行開始之前,也可以是動態地被乙個執行著的任務建立。如果乙個任務是被另乙個任務建立的,而這個任務的優先順序高於建立它的那個任務,則這個剛剛建立的任務將立即得到cpu的控制權。乙個任務可以通過呼叫ostaskdel()返回到睡眠態,或通過呼叫該函式讓另乙個任務進入睡眠態。

等待狀態:正在執行的任務可以通過呼叫兩個函式之一將自身延遲一段時間,這兩個函式是ostimedly()或ostimedlyhmsm()。這個任務於是進入等待狀態,等待這段時間過去,下乙個優先順序最高的、並進入了就緒態的任務立刻被賦予了cpu的控制權。等待的時間過去以後,系統服務函式ostimetick()使延遲了的任務進入就緒態。正在執行的任務期待某一事件的發生時也要等待,手段是呼叫以下3個函式之一:ossempend(),osmboxpend(),或osqpend()。呼叫後任務進入了等待狀態(waiting)。當任務因等待事件被掛起(pend),下乙個優先順序最高的任務立即得到了cpu的控制權。當事件發生了,被掛起的任務進入就緒態。事件發生的報告可能來自另乙個任務,也可能來自中斷服務子程式。

中斷服務狀態:正在執行的任務是可以被中斷的,除非該任務將中斷關了,或者ucos iiⅱ將中斷關了。被中斷了的任務就進入了中斷服務態(isr)。響應中斷時,正在執行的任務被掛起,中斷服務子程式控制了cpu的使用權。中斷服務子程式可能會報告乙個或多個事件的發生,而使乙個或多個任務進入就緒態。在這種情況下,從中斷服務子程式返回之前,ucos ii要判定,被中斷的任務是否還是就緒態任務中優先順序最高的。如果中斷服務子程式使乙個優先順序更高的任務進入了就緒態,則新進入就緒態的這個優先順序更高的任務將得以執行,否則原來被中斷了的任務才能繼續執行。

ucosii 學習 2 任務就緒表

任務就緒表 任務就緒表的任務就是高效的找出當前優先順序最高的就緒任務.由任務就緒表osrdytbl和任務就緒組osrdygrb組成,osrdytbl每乙個位都記錄著乙個任務的就緒狀態,0非就緒1就緒,osrdygrb是為了快速的找出當前的最高就緒任務而設定的,把就緒表中的八個任務狀態分為一組,當這個...

UCOSII學習 二 任務管理

uc os ii 中最多可以支援64 個任務,分別對應優先順序0 63,其中0 為最高優先順序。63為最低階,系統保留了4個最高優先順序的任務和4個最低優先順序的任務,所有使用者可以使用的任務數有56個。uc os ii提供了任務管理的各種函式呼叫,包括建立任務,刪除任務,改變任務的優先順序,任務掛...

FreeRTOS學習 一 任務的建立和刪除

宣告及感謝 跟隨正點原子資料學習,在此作為學習的記錄和總結 環境 keil stm32f103 1.任務的建立 建立任務的方法有三種 1 動態建立 xtaskcreate 使用此xtaskcreate函式 需配置 configsupport dynamic allocation 巨集定義為1 建立開...