RTOS學習筆記 ——任務

參考:《Freertos說明書》、  《嵌入式實時操作系統的多線程計算》

目錄

  1. 多任務系統
  2. 任務狀態
  3. 任務優先級
  4. 任務控制塊
  5. 任務切換
  6. 任務設計原則
1. 多任務系統

多任務系統利用任務調度器實現多個任務的輪番執行,由於每個任務執行的時間比較短,看起來像同一時刻執行了多個任務。

RTOS,任何時間點只能有一個任務運行。具體運行哪個任務,由RTOS任務調度器決定。

RTOS任務調度器需要確保當前任務開始執行時,其上下文與任務退出時一致。

任務特性:支持搶佔、優先級設置,每個任務擁有自己的堆棧。

 

2. 任務狀態

運行態

  • 正在運行的任務。

就緒態

  • 處於準備就緒,可以運行但沒有運行的任務。

阻塞態

  • 正在等待某個外部事件的任務。如等待隊列、信號量、事件組、通知、互斥信號量、延時。
  • 任務進入阻塞態,會有一個超時時間。當超過這個時間,即使未等到事件,也會退出阻塞狀態。
  • 被阻塞的任務,不能被調度器調用進入運行態。

掛起態

  • 被掛起的任務。被掛起的任務,不能被調度器調用進入運行態。
  • 被掛起的任務沒有超時機制,任務進入掛起狀態,調用函數vTaskSuspend();退出掛起狀態,調用函數vTaskResume()。

 

3. 任務優先級

每個任務都可以配置一個0~configMAX_PRIORITIES -1的優先級。數字越小,優先級越低。

configMAX_PRIORITIES:該參數可以自定義。

  • 考慮到RAM的消耗,該參數最好設置爲一個滿足應用的最小值。(????沒明白,task RAM的消耗不是跟task的數量有關嗎,爲什麼跟這個參數有關??)
  • 若該參數設置爲1,所以任務擁有相同的優先級。處於就緒狀態的任務輪轉獲取處理器的運行時間。
     
4. 任務控制塊

任務的信息保存在任務控制塊中。以下是任務控制塊中域的一些簡要說明:
在這裏插入圖片描述

5. 任務切換

RTOS系統的核心是任務管理,任務管理的核心是任務切換,任務切換決定了任務執行順序,切換效率的高低,也決定了系統的性能。
 

6. 任務設計原則

程序設計時,爲了得到更好的性能和最小化目標代碼,程序員應該遵守以下原則:

(1)最小化任務數目

  • 任務的數目會顯著影響系統的開銷,如任務切換需要花費時間,任務的堆棧消耗內存空間等。

(2)最小化優先級數目

(3)謹慎設置任務優先級

  • 錯誤地設置優先級可能導致任務餓死、優先級倒置、程序的行爲難以理解等問題。所以,設置任務優先級要慎重。

(4)等等。。。。。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章