任务管理之就绪表与就绪租
任务就绪表
每个任务的就绪态标志放入在就绪表中,就绪表中有两个变量OSRdyGrp和OSRdyTbl[]。
在OSRdyGrp中,任务按优先级分组,8个任务为一组。OSRdyGrp中的每一位表示8组任务中每一组中是否有进入就绪态的任务。任务进入就绪态时,就绪表OSRdyTbl[]中的相应元素的相应位也置位。
OSRdyGrp |=0x02;
OSRdyTbl[1] |=0x10;
OSRdyGrp |=0x04;
OSRdyTbl[2] |=0x20;
OSMapTbl[0] = 2^0 = 0x01(0000 0001)
OSMapTbl[1] = 2^1 = 0x02(0000 0010)
……
OSMapTbl[7] = 2^7 = 0x80(1000 0000)
OSRdyGrp |= OSMapTbl[prio>>3];
OSRdyTbl[prio>>3] |= OSMapTbl[prio&0x07];
OSRdyGrp |=0x02;
OSRdyTbl[1] |=0x10;
if((OSRdyTbl[prio>>3] &=
~OSMapTbl[prio&0x07]) == 0)
OSRdyGrp &= ~OSMapTbl[prio>>3];
根据就绪表确定最高优先级
两个关键:
将优先级数分解为高三位和低三位分别确定;
高优先级有着小的优先级号;
posted on 2015-12-27 19:30 acodewarrior 阅读(920) 评论(0) 编辑 收藏 举报