java模拟OSUnMapTbl[]

问题描述:

任务就绪表,记录当前就绪的任务,就绪表中把64个优先级的任务分成8组,优先级的1-3bit表示OSRdyTbl[]中组别OSRedyGrp,优先级的4-6bit表示每组中就绪任务的位置,当任务进入就绪态时,就绪表OSRdyTbl[]和OSRedyGrp中的相应元素的相应位也置位,任务切换时,在此表中,按优先级判定表OSUnMapTbl查找已经就绪的优先级最好的任务,并执行这个任务。

713309245

       查找优先级最高的任务,使用的是优先级判定表OSUnMapTbl[],OSUnMapTbl[]表中的数值表示的是一个8bit的数据最低位为1的位置,例如:1000 0000 最低位为1的位置是在第7位,那么OSUnMapTbl[128]的值就是7;1000 0010 最低位为1的位置是在第1位,那么OSUnMapTbl[130]的值就是1;

具体代码

clipboard

clipboard[1]

clipboard[2]

clipboard[3]

注:

    程序的实现根据是8*8的优先级表图,用位来标识值(第6组则第grp第6位标识为1),使用方法是数组

static int mapTbl[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };

由于是所有优先级共用grp和tbl[],因此设置grp、tbl[]为static修饰int类型

源程序文件

attachment

posted @ 2013-09-02 15:41  罗松超  阅读(482)  评论(0编辑  收藏  举报