任务控制块学习笔记

本文详细介绍了实时操作系统中任务控制块(TCB)的概念,包括其用于记录任务属性的数据结构,任务识别的方式,以及OS初始化、任务创建、启动多任务环境、任务切换和删除任务的流程。特别强调了TCB在任务管理中的核心作用和安全性,以及任务调度算法的种类。
摘要由CSDN通过智能技术生成

任务控制块

任务控制块是一个基于链表的数据结构,任务控制块主要用于记录任务的堆栈栈顶指针、指向下一个任务控制块的指针、任务等待的延迟时间、任务的当前状态标志与任务的优先级别等一些与任务管理有关的属性。

任务的识别

对于RTOS来说,为每一个任务分配一个称为任务控制块的结构体变量来管理任务,即使用指向任务控制块结构体变量的指针来识别任务。

任务控制块是多任务操作系统的核心数据,如果操作错误,可能导致系统崩溃。所以这个指针不应当提供给用户程序。

任务控制块的结构体数组

struct tn_os_tcb{
   
		jmp_buf		jbTaskContext; //用于存储上下文信息
		unsigned char	ucTaskStat;	//任务状态字
};
typedef struct tn_os_tcb TN_OS_TCB;	//TN_OS_TCB类型等效struct tn_os_tcb
static data TN_OS_TCB __GtcbTasks[TN_OS_MAX_TASKS];	//任务控制块的结构体数组

为一个任务控制块的结构体数组,首先声明了一个struct tn_os_tcb类型,它代表任务控制块,包括2个成员:不同数据类型的jbTaskContext 上下文信息与uc-TaskStat任务状态字。将TN_OS_TCB定义为struct tn_os_tcb类型的变量,接着定义数组__GtcbTasks,其元素为TN_OS_TCB类型数据,数组有TN_OS_MAX_TASKS个元素。

OS初始化

static data TN_OS_TASK_HANDLE __GthTaskCur;	//当前任务句柄
void tnOsInit(void)		//初始化任务控制块
{
   
	TN_OS_TASK_HANDLE thTask;	//操作的任务
	for (thTask=0;thTask<TN_OS_MAX_TASKS;thTask++{
   
	__GtcbTasks[LthTask].ucTaskStat=__TN_TASK_FLG_DEL;	
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值