文件名称:空任务列表-emc datadomain 2500 存储设 备维护手册
文件大小:4.33MB
文件格式:PDF
更新时间:2024-06-29 01:39:07
uCOS-II
图 3.2 空任务列表 3.4 就绪表(Ready List) 每个任务被赋予不同的优先级等级,从 0级到最低优先级 OS_LOWEST_PR1O,包括 0和 OS_LOWEST_PR1O 在内(见文件 OS_CFG.H)。当μC/OS-Ⅱ初始化的时候,最低优先级 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 的值可以降 低μC/OS-Ⅱ对 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, 程序清单 3.5中的代码用于将任务放入就绪表。Prio是任务的优先级。