所谓就绪状态是指任务准备运行,但CPU没空,任务等待运行的状态。
任务就绪算法涉及:
任务就绪算法涉及:
1)任务就绪表OSRdyTbl
2)映射表OSMapTbl
3)优先级判定表OSUnMapTbl
4)变量OSRdyGrp
5)相关的任务优先级prio
其中映射表OSMapTbl和优先级判定表OSUnMapTbl是2个常数表,用于查表算法。
一、将优先级为19的任务放入就绪表中:
2)优先级的3-5位,即010,查映射表,找到对应的值,赋给字节变量OSRdyGrp,这就确定了就绪表中的某一行。
3)优先级的0-2位,即011,查映射表,将值赋给前面找到的那一行就绪表值
4)找到对应的bit,填充为1
总结:由优先级的3-5位查映射表,找到的行对应着变量OSRdyGrp,这个变量中为1的位就是我们要找的就绪表中的行号,即确定了Y轴点位置;由优先级的0-2位查映射表,找到一组值,该值中为1的Bit的序列就是我们要找的X轴点位置,有了X、Y的值,就能唯一的确定一个点。
二、脱离就绪列表
和前面的动作相反,将映射表中的相应行取反后,与就绪表中的相应行相与。
三、优先级判定表
1)
四、查找就绪表中最高优先级的任务
1)由OSRdyGrp变量中的值69H,在映射表中找到Y轴,即就绪表中的某一行
2)根据就绪表中的这一行值,在映射表中找到X轴
3)然后Y左移3位加上X就是当前最高优先级的就绪任务