- 将任务添加到就绪表里面,表示任务己就绪,随时可以调度
- 为系统中处于就绪状态的任务分配CPU是多任务系统的核心工作
- 系统总是从处于就绪状态的任务中来选择一个运行
- 如果系统中无任何应用任务需要运行,就运行空闲任务
- 例程:
/********************************************************* * 函数名: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; } }
-
总结:
-
此处暂用不到优先级,头尾指针设置为0
-
需要了解下链表;单向、双向
-
链表中查找一个项目较费时,需要从头查起;为提高效率,为链表配置个数组,而这个数组的各个元素则存储了指向各个链表成员的指针,这样就可以通过数组来实现链表元素的快速查询
-
位图优先级、前导零
-
【5】从0到1教你写uC/OS-III————>任务就绪表
最新推荐文章于 2022-11-06 23:21:55 发布