UC/OS-II任务就绪表的理解
来源:互联网 发布:刷钻软件2017 编辑:程序博客网 时间:2024/05/05 05:59
任务就续表中有两个变量OSRdyTbl[]和OSRdyGrp。
OSRdyTbl[]:这个数组是INT8U类型的,它的每一个元素对应8个任务的就绪状态。比如数组元素为4个。则可以对应4*8=32个任务的就绪状态。
OSRdyGrp:这个变量为INT8U类型,这个变量每个位对应OSRdyTbl[]中的一个数组元素。只要OSRdyTbl[]中的数组元素不是0x00。那么OSRdyGrp的对应位就为1.否则为0。也就是说OSRdyTbl[]一个数组对应的8个任务状态只要有一个就绪。那么OSRdyGrp这个相应的位就为1。
eg:
OSRdyGrp=0x1110 0101 那么就是表示OSRdyTbl[0] [2] [5] [6] [7]任务组中有任务就绪。
怎么根据优先级来查找就绪表中的位置
优先级看做一个6位的二进制数,其中高三位表明OSRdyGrp的值。低三位表明OSRdyTbl[]中具体数组元素的值。 其实就是明OSRdyGrp指明OSRdyTbl[]数组中哪个元素。低三位则是这个元素的具体值。
OSUnMapTbl[]: 这个数组是为了找出最高优先级。因为可能有多个任务就绪。但是哪个优先级最高呢?就是由OSUnMapTbl[]数组来完成。
y = OSUnMapTbl[OSRdyGrp]; //找到最高优先级的组
x = OSUnMapTbl[OSRdyTbl[y];//找到这个组里最高优先级的位
OSPrioHighRdy = (INT8U)((y << 3) + x]); //算出最高优先级。
这两行代码就实现了找到最高优先级。
备注:第一次写博文。有不对的的地方欢迎拍砖。
0 0
- UC/OS-II任务就绪表的理解
- uC/OS-II就绪任务的管理
- uC/OS-II就绪任务的管理
- uC/OS II任务就绪表
- uc/os-ii任务就绪表
- 理解uC/OS的任务切换和任务就绪表、就绪组
- uc/os-ii的最高级就绪表
- uC/OS-II任务就绪表及任务调度
- 对uC/OS-II查找最高优先级就绪任务算法的理解
- uC/OS-II学习笔记(2012.12.11)任务就绪表之如何理解OSUnMapTbl[]
- UC/OS II 任务管理(2)之就绪表和就绪组
- uC/OS-II如何使任务在就绪表中进入就绪态与退出就绪态
- uC/OS-II如何使任务在就绪表中进入就绪态与退出就绪态
- uC/OS-II如何使任务在就绪表中进入就绪态与退出就绪态(转载)
- UC/OS基础知识之任务就绪表
- uC/OS-II任务调度之就绪表及最高优先级任务判定算法
- uC/OS-II学习笔记(2012.12.11)任务就绪表
- uC/OS-II学习笔记(2012.12.12)任务就绪表和桶式排序
- 插入排序
- javascript中二分查找法的两种实现方式
- M1卡升级CPU卡的方案
- VC获取屏幕分辨率及大小相关
- 环境搭建(五) 错误笔记
- UC/OS-II任务就绪表的理解
- Step into MongoDB - 10 - 服务端命令
- 服务端REST与SOAP的探讨
- zookeeper安装和应用场合(名字,配置,锁,队列,集群管理)
- 1019. 数字黑洞 (20)
- 找到一个非常好的集成了很多开放库的别人整理的网站,值得收藏 oc
- Step into Scala - 07 - 异常
- 第一个Spring和Spring环境搭建
- Step into Scala - 08 - 数组