UC/OS-II是常用的嵌入式实时操作体系,该操作体系最多支撑64个使命,因为操作体系是优先级抢占型实时体系,因而对使命最高优先级怎么查找是比较重要的。
在UC/OS-II中选用位图法的办法表明,也便是每一个bit表明一个使命,因而能够将一个8bits的数组成含有8个元素的数组即可。当使命现已精确安排妥当今后就会将相应的位设置为1。一般选用OSRdyTbl[i],0=
因为在UC/OS-II中优先级号越小,优先级越高,因而咱们在实践的调度进程中需求知道优先等级最高的。原本只要64bits,能够选用简略的查询完成,可是咱们能够知道关于不同的优先级号,查询的时刻是不相同的,这样也便是的咱们的实时体系有了必定的延时。在UC/OS-II中的完成表现了必定的优胜型,关于不同的优先等级都是相同的时刻,这样也就使得实时型进一步进步。他的完成办法主要是根据了查表法。详细的表格规划思路如下。根据上面的剖析能够知道,咱们只需求别离知道队伍就能知道有限等级号。那么找到最优先的行号和最优先的列号也就完成了最高优先级的查找。
完成的思路如下:
因为OSRdyGrp有8bits,那么或许存在256种状况,经过OSRdyGrp就能知道最优先的行i,相同OSRdyTbl[i]也是8bits,那么也有8bits,总共存在256种状况,经过他也就能知道最优先的列j。因而咱们也能够根据相同的表完成判别。
表的规划进程如下:
因为OSRdyGrp存在256种状况,咱们只需求知道为1的最低bit就知道了最优的行号,比方OSRdyGrp=98(d)=1100010(b),为1的最低bit为bit1,因而咱们就能够根据OSRdyGrp知道最高优先级号是在第1组中,即找到行号为1。相同的办法也能够适用于最优列的查找。
因而能够规划表为如下:
- INT8UconstOSUnMapTbl[256]={
- /*0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f*/
- 0,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,/*0x00to0x0F*/
- 4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,/*0x10to0x1F*/
- 5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,/*0x20to0x2F*/
- 4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,/*0x30to0x3F*/
- 6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,/*0x40to0x4F*/
- 4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,/*0x50to0x5F*/
- 5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,/*0x60to0x6F*/
- 4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,/*0x70to0x7F*/
- 7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,/*0x80to0x8F*/
- 4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,/*0x90to0x9F*/
- 5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,/*0xA0to0xAF*/
- 4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,/*0xB0to0xBF*/
- 6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,/*0xC0to0xCF*/
- 4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,/*0xD0to0xDF*/
- 5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,/*0xE0to0xEF*/
- 4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0/*0xF0to0xFF*/
- };
根据上面的表格能找到每一个OSRdyGrp值对应的最高优先级号地点的行,相同根据上表能找到OSRdyTbl[i]每一个值对应的最高优先级号地点的列。然后根据上面的等式TaskPrior = 8*i+j=(i<<3)+ j,别离确认i,和j。
即:
i = OSUnMapTbl[OSRdyGrp] ;// 找到行号
j = OSUnMapTbl[OSRdyTbl[i]];//找到列号
TaskPrior = 8*i+j=(i<<3)+ j;//找到最高优先级号。
以上的位图和查表法的相结合就很好的处理了UC/OS-II的优先级办理问题。
拓宽:假如优先等级号越高,表明的有限级越高时,相同也能够选用这种位图法和查表相结合的原理。仅仅表格的内容存在不同罢了,那时就应该挑选最高bit为1时对应的bit值。这样就能很快的找到安排妥当的最大的优先等级号。
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/zhizao/317772.html