使用者指定元素的位數(如32bit)
那麼ospriotbl結構即為任務就緒表,其中每乙個元素是乙個使用者制定位數的元素
os_priogethighest()函式遍歷這個陣列並找到第乙個不為零的元素(找到那一行)
計算這個元素的前導零個數之後即可得到最高的優先順序任務
前導零為乙個二進位制數第乙個1前出現的0
任務就緒列表由兩個部分組成–優先順序位對映表ospriotbl (上文已經說過)
———————————— –osrdylist記錄每個優先順序下所有就緒的任務
osrdylist中每個os_rdy_list元素的定義
struct os_rdy_list ;
nbrentries記錄了對應優先順序下就緒任務的數量
兩個指標是當前優先順序的就緒任務的tcb的雙向鍊錶的頭、尾指標
ostaskcreate()會建立乙個任務加入就緒任務列表—放到對應優先順序所指向的雙向鍊錶的尾部,這是因為考慮到之前的任務可能是新任務的建立者,而這時兩個任務優先順序相同,沒有理由先執行新的任務而使建立者被打斷。然而,當新建任務與當前任務優先順序不同時,新建任務會被插入雙向鍊錶的頭部。
正點原子ucosIII學習筆記(一)
最近又開了新坑,在學過stm32後,我選擇去學學嵌入式作業系統,就從ucosiii開始好了。我看的是正點原子ucosiii的課程。第一節主要是介紹了下裸機跑程式和加作業系統跑程式的區別 裸機的話,乙個程式可分為前端和後端。後端就是乙個大迴圈,通過乙個死迴圈,不斷的呼叫hadeware裡函式的api,...
Ucosiii學習筆記(一)建立任務
os.h 檔案 為ucosiii的主標頭檔案,其包含以下標頭檔案 os cfg.h cpu.h cpu core.h lib bef.h os type.h os cpu.h 2.建立應用程式任務,必要的操作是為任務分配任務控制模組 os tcb 宣告任務堆疊,宣告任務函式的原型。並在主函式中建立開...
uCosIII複習筆記(一)
1.ucosiiii啟動和初始化 osinit 初始化,ostaskcreate 建立任務,osstart 啟動ucosiii 3.任務控制塊 os tcb,結構體 建立 os tcb tasktcb 初始化 建立任務時ostaskcreate 中會呼叫os taskinittcb 4.任務堆疊 任...