您的位置: 嵌入式在线 > 技术中心 > Uc/OS II > uCOS II就绪表(Ready List)分析

uCOS II就绪表(Ready List)分析

2008-01-08      嵌入式在线      收藏 | 打印

      3.0 就绪表(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,
 
      程序清单3.5中的代码用于将任务放入就绪表。Prio是任务的优先级。

 

本文来源:嵌入式在线    作者:
热点资讯(一周点击率)
热评博文
评一评已有 3 位网友对此文发表了看法。  我也来评一下

验证码:  看不清?换一张

 

快乐大本营

    嵌入式系统无疑已成为当前业界看好的巨大“蛋糕”。 今日头条推荐“发展嵌入式软件企业要练好‘内功’”。

    想了解嵌入式开发工具的市场情况吗?先来体验下我们的在线调查吧!填写调查问卷

工程师之星
王波涛
熟悉单片机及其接口技术
  • 胡菲菲  技术专长:嵌入式系统linux
  • 柳如峰  技术专长:模电,电源
热门招聘
论坛热贴