【5】从0到1教你写uC/OS-III————>任务就绪表

  1. 将任务添加到就绪表里面,表示任务己就绪,随时可以调度
  2. 为系统中处于就绪状态的任务分配CPU是多任务系统的核心工作
  3. 系统总是从处于就绪状态的任务中来选择一个运行
  4. 如果系统中无任何应用任务需要运行,就运行空闲任务
  5. 例程:
    /*********************************************************
     * 函数名:void OS_RdyListInit(void);
     * 描述  :就绪列表管理
     * 输入  :无
     * 输出  :无
     * 返回  :无 
     * 调用  :内部调用 
     **********************************************************/
    
    //支持最大的优先级
    #define     OS_CFG_PRIO_MAX     32u
    
    /*
    ************************************************************************************************************************
    *                                              数据类型
    ************************************************************************************************************************
    */
    typedef struct  os_rdy_list     OS_RDY_LIST;
    
    /*
    ************************************************************************************************************************
    *                                              就绪列表
    ************************************************************************************************************************
    */
    struct  os_rdy_list //双向链表
    {
        OS_TCB          *HeadPtr;       //头指针
        OS_TCB          *TailPtr;       //尾指针
    };
    
    
     void OS_RdyListInit(void)
     {
         OS_PRIO    i;
         OS_RDY_LIST    *p_rdy_list;
         
         for(i = 0u; i < OS_CFG_PRIO_MAX; i++)
         {
             p_rdy_list = &OSRdyList[i];        //32级任务优先级全部置为0
             p_rdy_list->HeadPtr = (OS_TCB *)0;
             p_rdy_list->TailPtr = (OS_TCB *)0;
         }
         
     }
  6. 总结:

    1. 此处暂用不到优先级,头尾指针设置为0

    2. 需要了解下链表;单向、双向

    3. 链表中查找一个项目较费时,需要从头查起;为提高效率,为链表配置个数组,而这个数组的各个元素则存储了指向各个链表成员的指针,这样就可以通过数组来实现链表元素的快速查询

    4. 位图优先级、前导零

发布了24 篇原创文章 · 获赞 1 · 访问量 1506

猜你喜欢

转载自blog.csdn.net/Linux_ARM9/article/details/105152408