创建 任务 到 就 绪 态 : 任务创建完成后进入就 绪 态,表明任务已准备就绪,只等待调度器进行调度即可运行。
就 绪 态 到 运行 态 :调度器发生任务切换 时,就绪列表中最高优先级的任务优先执行,进入运行态
运行 态 到 就 绪 态 : 创建或还原更高优先级的任务后,将进行任务调度 。 此 时 ,就 绪列表中优先级最高的任务将变为运行状态 。 然 后 , 原 始 正在 运行 的 任务 将 从运行 状态 更 改 为 就 绪 状 态 , 并 位 于 就 绪 列 表 中 。 更 高 优先 级 任务 运行 结束 后 ,继续运行原始任务。
运行 态 到 阻塞 态 : 正在 运行 的 任务 发 生 阻 塞(挂 起 、 延 时 、 读 信号 量 等 待 )时 , 该 任务 会 从 就 绪 列 表 中 删除 , 任 务 状态 由 运行 态 变 成 阻塞 态 , 然 后 发 生 任 务切换 , 运 行 就 绪 列 表 中 当前 最 高 优先 级 任务 。
阻塞 态 到 就 绪 态 : 阻塞 的 任务 被 恢复 后 (任务 恢复 、 延 时 时 间 超 时 、 读信号量 超 时 或 读 到 信号 量 等 ) 此 时 被 恢复 的 任务 会 被 加 入 就 绪 列 表 , 从 而 由 阻塞 态 变成就绪态***;如果此时被恢复任务的优先级高于正在运行任务的优先级,则会发生任务切换,将该任务将再次转换任务状态,由就绪态变成运行态。***
就绪态、阻塞态、运行态到挂起态:任务可以通过调用vTaskSuspend()API函数可以将处于任何状态的任务挂起,被挂起的任务得不到CPU的使用权,也不会参与调度,除非它从挂起态中解除。
挂起态到就绪态:把一个挂起状态的任务恢复的唯一途径就是调用VTaskResume()或vTaskResumeFromISR()API函数,如果此时被恢复任务的优先级高于正在运行任务的优先级,则会发生任务切换,将该任务将再次转换任务状态,由就绪态变成运行态。