对任务就绪表的操作

上传人:汽*** 文档编号:446867448 上传时间:2022-12-24 格式:DOCX 页数:2 大小:14.09KB
返回 下载 相关 举报
对任务就绪表的操作_第1页
第1页 / 共2页
对任务就绪表的操作_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《对任务就绪表的操作》由会员分享,可在线阅读,更多相关《对任务就绪表的操作(2页珍藏版)》请在金锄头文库上搜索。

1、76543210INT8U OSRdyGrp由于每个任琳就绸臆只占一拉,因此 OSRdyT成数勤卜佗屈秘叶盼的 堵状态“ 状态,a对任务就绪表的操作(将就绪任务状态填入就绪表)当每个就绪的任务都放入就绪表中时,就绪表就有有两个变量:OSRdyGrp、OSRdyTbl来表示每个任务的优先级。彻了以看成一MJ且-INT8U。哭此虞1京优先级最高任务wwwwwvwwvv为了便于作g表的查找,UC/OS-II又 定义了一建为】NT8U的变量 OSRdyGrp,该变量瞧都对应 OSRdyTblQ的一个任务蛆EIWB的顷个元素)。/01245677654321疽15141312.11.1098232221

2、20.19.18:1716313029,28.21药252439明3.736:35.:34,.对.我4746454441405554园.52.51风483;OSRdyTblprio3 | = OSMapTblprio & 0x07;其中,OSMapTbl是uC/OS-II为加快运算速度定义的一个数组,各元素为:OSMapTbl0 = 0000 0001BOSMapTbl1 = 0000 0010BOSMapTbl2 = 0000 0100BOSMapTbl3 = 0000 1000BOSMapTbl4 = 0001 0000BOSMapTbl5 = 0010 0000BOSMapTbl6 =

3、0100 0000BOSMapTbl7 = 1000 0000B同样,如果要使一个优先级为prio的任务脱离就绪态,则可使用如下代码:If(OSRdyTblprio3 &= OSMapTblprio & 0x07)=0)OSRdyGrp &= OSMapTblprio3;此段代码所执行的操作为将任务就绪表OSRdyTblprio3相应元素的相应位清零,且当 OSRdyTblprio3中的所有位都为零时,即全组任务中没有一个进入就绪态时,OSRdyGrp 的相应位才为零。例:欲使优先级为12的任务进入和脱离就绪态,设置就绪表。答:由题意得,任务优先级为12,即00001100B。进入就绪态:OSRdyGrp|=OSMapTblprio3; (OSMapTbl1 = 0000 0010)OSRdyTbl1|=OSMapTblprio &0x07; (OSMapTbl=0001 0000)脱离就绪态:OSMapTblprio & 0x07=OSMapTbl4 = 11101111OSMapTblprio3=OSMapTbl1 = 11111101If(OSRdyTblprio3 &=OSMapTblprio & 0x07) = 0)(该行所有任务都是非就绪态)OSRdyGrp = OSRdyGrp & OSMapTblprio3 = 0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号