xfzhang9 发表于 2004-2-24 21:53:03

请教uC/OS中的"OSUnMapTbl[]"是怎么得来的?

如下所示为uC/OS中的"OSUnMapTbl[]":
INT8U const OSUnMapTbl[] ={
0,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
}
如书上它是一个预先编制的对照表,用来加快查找最高优先级的进程。通过逻辑推算能够得到这张表,但是我想知道这个表是怎么计算出来的(用数学公式来表达)。不知道有没人研究过?

chyyuu 发表于 2004-2-26 00:20:54

仔细看看邵老师翻译的书,应该可以得到答案

derney 发表于 2004-5-16 13:22:19

这个表中的元素值表示该元素的索引的最低为1位的位置。例如,第4个元素,其索引值4的二进制表示为(00000100), 其最低为1的位是第2位,所以第4个元素值是2。再比如第5个元素,其索引值5的二进制表示为(00000101),其最低为1的位是第0位,所以第5个元素值为0。
页: [1]
查看完整版本: 请教uC/OS中的"OSUnMapTbl[]"是怎么得来的?