任務控制塊及其鍊錶

2021-07-29 18:19:02 字數 1296 閱讀 1497

typedef struct os_tcbos_tcb;
ostcbstat用來存放任務的當前狀態:

os_stat_rdy 任務處於就緒態

os_stat_sem 任務處於等待訊號量

os_stat_mbox 任務處於等待訊息郵箱

os_stat_q 任務處於等待訊息佇列

os_stat_suspend 任務處於被掛起

os_stat_mutex 任務處於互斥型訊號量狀態

任務控制塊鍊錶:

系統呼叫osinit()函式對ucosii系統進行初始化時,就在ram中建立乙個os_tcb結構型別的陣列ostcbtbl[os_max_tasks+os_n_sys_tasks],然後把各個元素鏈結在一起,從而形成乙個空任務塊鍊錶。

os_cfg.h中的常數os_max_tasks指明了使用者任務的最大數目。

ucos_ii.h中的常數os_n_sys_tasks指明了系統任務的最大數目(2)。

以後建立任務時,只需要在乙個空白任務塊中填上任務的屬性。

ucos_ii.h中還定義了乙個型別為os_tcb*的陣列ospriotbl[ ]。以優先順序為順序在各個元素存放了指向任務控制塊的指標,這樣訪問任務控制塊時不需要遍歷任務控制塊鍊錶。

而且還定義了乙個存放當前執行的任務的任務控制塊位址的指標ostcbcur。

ostaskdel()用來刪除乙個任務,即將任務的任務控制表從任務控制鍊錶中刪除,並將任務控制鍊錶交還給空任務塊鍊錶。

任務控制塊的初始化函式

int8u ostcbinit(

int8uprio,//任務的優先級別,儲存在ostcbprio

os_stk*ptos,//任務堆疊棧頂指標,儲存在ostcbstkptr

os_stk*pbos,//任務堆疊棧底指標,儲存在ostcbstkbottom

int16uid, //任務的識別符號,儲存在ostcbid

int16ustl_size,//任務堆疊的長度,儲存在ostcbstksize

void*pext,//任務控制塊的擴充套件指標,儲存在ostcbextptr

int16uopt //任務控制塊的選擇項,儲存在ostcbopt

該函式主要任務:

為被建立的任務從空任務控制塊鍊錶中獲取乙個任務控制塊;

用任務的屬性對任務控制塊各個成員進行賦值;

把這個任務控制塊鏈如到任務控制鍊錶中。

uC OS ll 任務 任務控制塊 任務控制鍊錶

第二章 2.1任務 又稱為執行緒 組成部分 任務程式 任務堆疊 任務控制塊 分類 使用者任務 解決應用問題 系統任務 為應用程式提供服務 uc os ll在管理任務時將每個任務作為乙個節點,鏈結成任務鍊錶,最多可對64個任務進行管理。狀態 典型地 每個任務都是乙個無限的迴圈。每個任務都處在以下5種狀...

ucos 任務控制塊及任務鍊錶

1 任務控制塊 首先看看ucos中任務控制塊的資料結構為 typedef struct os tcb os tcb 任務控制塊記錄了 任務的堆疊指標,任務當前的執行狀態,任務的優先順序等屬性。其中上面結構中任務狀態 int8u ostcbstat task status 的可取值範圍如下 2 任務控...

C OS 任務控制塊

c os 是通過任務控制塊來管理任務的。任務控制塊是乙個基於鍊錶的資料結構,任務控制塊主要用於記錄任務的堆疊棧頂指標 指向下乙個任務控制塊的指標 任務等待的延遲時間 任務的當前狀態標誌與任務的優先級別等一些與任務管理有關的屬性。當任務的cpu使用權被剝奪時,c os 用任務控制塊來儲存該任務的狀態,...