1. 程式人生 > >ucosIII任務管理(未完持續)

ucosIII任務管理(未完持續)

概述要點

  • 單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轉而去執行中斷服務函式,此時任務的任務狀態叫做中斷服務態。

狀態轉換如下圖
這裡寫圖片描述

這裡寫圖片描述