嵌入式实时操作系统uc/OS-II第3章课后习题5-9

目的

 学习和理解实时操作系统

声明

习题答案是笔者基于相关书籍和网上内容自己理解的,有不对或疑问的地方大家一起沟通

五. 在uC/OS-II中任务有哪五种状态

一共有5种状态:睡眠,就绪,运行,等待,中断

(1) 睡眠

没有受任务控制块管理的任务

(2)就绪

任务已经被任务控制块管理,并且已经具备了运行的条件

(3)运行

任务拥有了CPU的使用权

(4) 中断

正在运行的任务,响应了中断事件后的状态

(5)等待

正在运行的任务,需要等待一段时间或需要等待一个事件发生时,需要把CPU的使用权交给其它任务后的状态

任务状态机如下:

 值得一提的是:

1>空闲任务不允许删除

2>不允许在中断服务函数中删除任务

3>睡眠,运行,中断状态实际上并不需要额外的标记,故在源码中并没有对应的状态体现;只有就绪态和挂起两种状态,详见如下:

六.任务控制块中记录了任务的哪些信息?

   任务控制块,类似一个文件句柄一样,其记录了任务的相关信息,例如任务堆栈指针,任务当前状态,任务优先级等。

七.什么是空任务控制块链表,什么是任务控制块链表?

  (1)空任务控制块链表

        在操作系统初始化的时候,先创建一些空的任务块,并将其串在一起;头指针:OSTCBFreeList

 (2)任务控制块链表

       在使用过程中会创建一些任务,为方便系统管理,会将这些任务串在一起,就形成了任务控制块链表。头指针:OSTCBList

      等创建任务的时候系统就会将空任务控制块链表头指针OSTCBFreeList指向的任务控制块分配给该任务。再给任务控制块中的各成员赋值以后,就按任务控制块链表的头指针OSTCBList将其加入到任务控制块链表中。
      等删除任务的时候,会将该任务控制块从任务控制块链表中移除,并将其归还给空任务控制块链表

        为了加快对任务控制块的访问速度,保证任务切换时间的实时性,操作系统中定义了一个数组指针OSPrioTbl[],其基于任务的优先级存放了各个任务控制块指针;定义了一个变量OSTCBCur来存放当前任务控制块指针。

八. OSTCBTbl[] 有什么用途?

      任务控制块列表数组,任务控制块的实际存放位置

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

       OSTcbCur

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值