ucosIII任務管理(未完持續)
阿新 • • 發佈:2019-01-29
概述要點
- 單CPU 中,在任何時刻只能是一個任務被執行
- C/OS-III 支援多工且對任務數量沒有限制,任務數僅取決於處理器記憶體的大小(RAM)。
- 允許任務具有相同的優先順序
任務的組成
- 任務堆疊:上下文切換用於儲存任務當前環境。也就是內部暫存器的值。
- 任務控制塊:儲存任務的各個屬性
- 任務函式:完成指定功能
系統任務:
- 空閒任務:UCOSIII建立的第一個任務,UCOSIII必須建立的任務,此任務有UCOSIII自動建立,不需要使用者手動建立。
- 時鐘節拍任務:此任務也是必須建立的任務。
- 統計任務:可選任務,用來統計CPU使用率和各個任務的堆疊使用量。此任務是可選任務,由巨集OS_CFG_STAT_TASK_EN控制是否使用此任務。
- 定時任務:用來向用戶提供定時服務,也是可選任務,由巨集OS_CFG_TMR_EN控制是否使用此任務。
- 中斷服務管理任務:可選任務,由巨集OS_CFG_ISR_POST_DEFERRED_EN控制是否使用此任務。
任務狀態
- 休眠態(Dormant):任務已經在CPU的flash中了,但是還不受UCOSIII管理。
- 就緒態(Ready):系統為任務分配了任務控制塊,並且任務已經在就緒表中登記,這時這個任務就具有了執行的條件,此時任務的狀態就是就緒態。
- 執行態(Running):任務獲得CPU的使用權,正在執行,單CPU任何時刻只有一個任務在執行。
- 掛起態(Pending):正在執行的任務需要等待一段時間,或者等待某個事件,這個任務就進入了掛起態,此時系統就會把CPU使用權轉交給別的任務。
- 中斷服務態(Interrupted):當傳送中斷,當前正在執行的任務會被掛起,CPU轉而去執行中斷服務函式,此時任務的任務狀態叫做中斷服務態。
狀態轉換如下圖