UCOSII操作系统之任务控制块(OS_TCB)

本文详细介绍了任务控制块OS_TCB在操作系统中的作用,它用于保存任务的状态并支持任务的切换。OS_TCB包含了如任务堆栈指针、任务状态、优先级等关键信息,并提供了扩展字段以适应用户需求。此外,还解释了如何使用OS_TCB进行任务延迟和删除操作。
摘要由CSDN通过智能技术生成

创建任务时,会给它分配一个任务控制块OS_TCB。任务控制块是一种数据结构,当任务被抢占时,用它来维护任务的状态。当任务重新获得对CPU的控制时,任务控制块允许任务在它停止的地方继续执行。注意到,我对OS_TCB中的字段进行了组织,以允许在维护成员的逻辑分组的同时对数据结构进行打包

OS_TCB在创建任务时初始化。下面是对OS_TCB数据结构中的每个字段的描述:

typedef struct os_tcb { 
    OS_STK        *OSTCBStkPtr;    //任务当前堆栈指针
         
	#if OS_TASK_CREATE_EXT_EN     
    void          *OSTCBExtPtr; //指向用户可定义任务控制块扩展的指针。这允
                                //许您或用户的用户扩展任务控制块,而不必更	
                                //改的源代码。													                         
    OS_STK        *OSTCBStkBottom; //指向任务堆栈底部的指针
    INT32U         OSTCBStkSize; //保存堆栈大小的变量,以元素的数量而不是字 
                                 //节的数量表示           
    INT16U         OSTCBOpt;  //一个保存“选项”的变量,可以传递给函数
                              //OSTaskCreateExt()
    INT16U         OSTCBId; // a variable that is used to hold an 
                            //identifier for the task
	#endif 
 
    struct os_tcb *OSTCBNext;    //TCB节点的后继       
    struct os_tcb *OSTCBPrev;    //TCB节点前驱
 
#if (OS_Q_EN && (OS_MAX_QS >= 2)) || OS_MBOX_EN || OS_SEM_EN 
    OS_EVENT      *OSTCBEventPtr; //指向事件控制块的指针
#endif 
 
#if (OS_Q_EN && (OS_MAX_QS >= 2)) || OS_MBOX_EN 
    void          *OSTCBMsg;  //指向发送给任务的消息的指针
#endif     
     
    INT16U         OSTCBDly; //当任务需要被延迟一定数量的时钟滴答声或任务需
                             //要为事件超时而付出代价时使用。即可以容忍的时
                             //间
    INT8U          OSTCBStat; //指示任务状态,当OSTCBStat为0时,任务就可以
                              //运行了
    INT8U          OSTCBPrio; //任务的优先级


//OSTCBX、OSTCBY、OSTCBBitX和OSTCBBitY用于加速使任务准备运行的过程,或使任务
//等待事件(避免在运行时计算这些值)。这些字段的值在创建任务或更改任务的优先级时
//计算
 
    INT8U          OSTCBX; 
    INT8U          OSTCBY; 
    INT8U          OSTCBBitX; 
    INT8U          OSTCBBitY; 
 
#if OS_TASK_DEL_EN     
    BOOLEAN        OSTCBDelReq; //指示任务是否请求删除当前任务
#endif 
} OS_TCB; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值