ucos---优先级

来源:互联网 发布:linux shell 变量复制 编辑:程序博客网 时间:2024/04/20 05:42

ucos是一个preemptive多任务实时内核,包括任务管理、时间管理、事件管理、内存管理等模块。

 

任务是一个无限循环的函数,优先级也是它的ID,数据结构是OS_TCB。

优先级:数字越小优先级越高

 

ucos中该表由OSRdyGrp和OSRdyTbl[]两个变量替代。在调度过程中,寻找优先级最高的任务就是判断最低位的过程。

假设OSRdyGrp=0b01000101(0x45),说明有3个组都有ready task;

      OSRdyTbl[0] = 0b00010010;        //第0组有2个任务ready,优先级分别是0*8+1和0*8+4;

      OSRdyTbl[2] = 0b01010100;        //第2组有3个任务ready,优先级分别为2*8+2/2*8+4/2*8+6;

      OSRdyTbl[6] = 0b00001000;        //第6组有1个任务ready,优先级为6*8+4;

以上计算通过OSUnMapTbl查表完成(OSUnMapTbl存储了0~255数字最低位的位数,OSUnMapTbl[6]=1, OSUnMap[32]=5)

       OSUnMapTbl[OSRdyGrp]=0;

       OSUnMapTbl[OSRdyTbl[0]]=1;

       就绪状态任务中最高优先级为0*8+1;

 

原创粉丝点击