安排妥当表(Ready List)
每个使命被赋予不同的优先级等级,从0级到最低优先级OS_LOWEST_PR1O,包含0和OS_LOWEST_PR1O在内(见文件OS_CFG.H)。当uCOS II初始化的时分,最低优先级OS_LOWEST_PR1O总是被赋给闲暇使命idle task。留意,最多使命数目OS_MAX_TASKS和最低优先级数是没有联系的。用户应用程序能够只要10个使命,而依然能够有32个优先级的等级(假如用户将最低优先级数设为31的话)。
每个使命的安排妥当态标志都放入安排妥当表中的,安排妥当表中有两个变量OSRedyGrp和OSRdyTbl[]。在OSRdyGrp中,使命按优先级分组,8个使命为一组。OSRdyGrp中的每一位表明8组使命中每一组中是否有进入安排妥当态的使命。使命进入安排妥当态时,安排妥当表OSRdyTbl[]中的相应元素的相应位也置位。安排妥当表OSRdyTbl[]数组的巨细取决于OS_LOWEST_PR1O(见文件OS_CFG.H)。当用户的应用程序中使命数目比较少时,削减OS_LOWEST_PR1O的值能够下降uCOS II对RAM(数据空间)的需求量。
为确认下次该哪个优先级的使命运行了,内核调度器总是将OS_LOWEST_PR1O在安排妥当表中相应字节的相应方位1。OSRdyGrp和OSRdyTbl[]之间的联系见图3.3,是按以下规矩给出的:
当OSRdyTbl[0]中的任何一位是1时,OSRdyGrp的第0方位1,
当OSRdyTbl[1]中的任何一位是1时,OSRdyGrp的第1方位1,
当OSRdyTbl[2]中的任何一位是1时,OSRdyGrp的第2方位1,
当OSRdyTbl[3]中的任何一位是1时,OSRdyGrp的第3方位1,
当OSRdyTbl[4]中的任何一位是1时,OSRdyGrp的第4方位1,
当OSRdyTbl[5]中的任何一位是1时,OSRdyGrp的第5方位1,
当OSRdyTbl[6]中的任何一位是1时,OSRdyGrp的第6方位1,
当OSRdyTbl[7]中的任何一位是1时,OSRdyGrp的第7方位1,