• 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

  • 相关阅读:
    7段数码管绘制
    画五角星
    绘制正方形
    蟒蛇的绘制
    玫瑰花
    小猪佩奇
    数列求和
    水仙花数
    鸡兔同笼
    画国际象棋盘
  • 原文地址:https://www.cnblogs.com/luosongchao/p/3296632.html
Copyright © 2020-2023  润新知