uCOS-ii内核的任务之二

6.  任务控制块记录了任务的那些信息?

答:任务管理是通过对TCB(Task Control Block)的操作来实现的。任务在操作系统中是通过TCB来描述的。每个任务都有唯一的任务控制块,内核根据TCB对任务进行控制和管理,而任务的各种动态特征也是通过TCB表现出来的。TCB是任务在系统中存在的唯一标志。
    TCB包括任务相关信息的数据结构和任务执行过程中所需要的所有信息。不同实时内核的任务控制块包含的信息通常不一样,但大都包含任务名字、任务执行的起始地址、任务的状态、任务优先级、任务上下文(寄存器、堆栈指针和PC等)和任务的队列指针等内容。
为了节约内存,实时内核所需支持的任务数量通常需要进行预先设置,然后在实时内核初始化的过程中,按照配置的任务数量初始化TCB,一个任务对应一个初始的TCB,形成    一个空的空闲任务控制块链。在任务创建的时候,实时内核从空闲任务控制块链中微分无分配一个任务控制块。随后所有对任务的操作都是基于对应的TCB来进行的。当任务被删除后,对应的任务控制块又被实时内核回收到空闲任务控制块链。
    任务的上下文为运行任务的CPU上下文,通常为所有的寄存器和状态寄存器。

 注:以上答案转自:as long as Simple == Best

7.  什么是空任务控制链表?什么是任务控制链表?

答:uCOS-ii在初始化时,需要按照配置文件所设定的任务数事先定义一个空白任务控制块,这样当程序创建一个任务需要一个任务控制块时,只要拿一个空白块填上任务的属性即可。空任务块就是还没分配任务的控制块,然后把各个任务链成一个表就成为空任务链表。在空任务链表的基础上,应用程序创建用户任务并建立系统任务,形成任务控制链表。

8.  数组OSTCBTbl[]有什么用途?

答:该数组用于存储各个任务控制块的文件信息,来构成链表。

9.  正在运行任务的任务控制块指针存放在那个变量中?

答:正在占有cpu而处在运行状态的任务所属的控制块叫做当前任务的控制块。uCOS-ii专门定义可一个变量OSTCBCur来存放当前任务控制块指针。

10.  变量OSRdyGrp有什么用?

答:为了便于对就绪表的查找,uCOS-ii有定义了一个数据类型为INT8U的变量OSRdyGrp,并使该变量的每一位都对应OSRdyTbi[]的一个任务组(即是数组的一个元素),如果某任务组的任务就绪,则在变量OSRdyTbl里把该任务组所对应的位置为1;否则置为0。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值