ucos 任務控制塊及任務鍊錶

2021-06-19 03:29:08 字數 1776 閱讀 5800

1:任務控制塊

首先看看ucos中任務控制塊的資料結構為:

typedef struct os_tcb os_tcb;

任務控制塊記錄了:任務的堆疊指標,任務當前的執行狀態,任務的優先順序等屬性。其中上面結構中任務狀態

int8u            ostcbstat;             /* task      status   */的可取值範圍如下:

2:任務控制塊鍊錶

ucso中系統預設建立了:

os_max_tasks + os_n_sys_tasks個任務控制塊。

os_ext  os_tcb          

ostcbtbl

[os_max_tasks + os_n_sys_tasks];   /* table of tcbs                  */

當建立任務的時候,執行從已經建立好的任務控制塊中取出乙個空閒的os_tcb來使用。其有關初始化函式如下:

static  void  os_inittcblist (void)

ptcb1->ostcbnext = (os_tcb *)0;                              /* last os_tcb                        */

#if os_task_name_size > 1

ptcb1->ostcbtaskname[0] = '?';                               /* unknown name                       */

ptcb1->ostcbtaskname[1] = os_ascii_nul;

#endif

ostcblist               = (os_tcb *)0;                       /* tcb lists initializations          */

ostcbfreelist           = &ostcbtbl[0];}其中

ostcblist  中存放的是已經建立的任務的任務控制塊即此任務控制塊已經配初始化過。

ostcbfreelist 中存放的是空閒的尚未被使用的任務控制塊。

經過上面的函式初始化之後,系統所有的任務控制塊形成了乙個空閒鍊錶ostcbfreelist。

在任務建立函式中os_tcbinit()函式中如下**:

其中ostcbcur表示當前執行的tcb,ostcbfreelist:指向當前空閒的任務控制塊鍊錶,ostcbhighrdy:指向任務就緒表中任務優先順序最高的任務的tcb,ostcbpriotbl:指向某個任務優先順序的tcb指標。

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

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

ucos任務控制塊詳解

ucos實現多工的基礎包括幾個方面 任務控制塊,任務堆疊,中斷,任務優先順序,一一說起 首先,任務控制塊的結構如下 系統在執行乙個任務的時候,按照任務的優先順序獲取任務控制塊,再在任務堆疊中獲得任務 指標 typedef struct os tcb os tcb 該結構體中有比較多的靠巨集定義開啟的...

任務控制塊及其鍊錶

typedef struct os tcbos tcb ostcbstat用來存放任務的當前狀態 os stat rdy 任務處於就緒態 os stat sem 任務處於等待訊號量 os stat mbox 任務處於等待訊息郵箱 os stat q 任務處於等待訊息佇列 os stat suspen...