Freertos 任务调度

创建 任务 到 就 绪 态 : 任务创建完成后进入就 绪 态,表明任务已准备就绪,只等待调度器进行调度即可运行。

就 绪 态 到 运行 态 :调度器发生任务切换 时,就绪列表中最高优先级的任务优先执行,进入运行态

运行 态 到 就 绪 态 : 创建或还原更高优先级的任务后,将进行任务调度 。 此 时 ,就 绪列表中优先级最高的任务将变为运行状态 。 然 后 , 原 始 正在 运行 的 任务 将 从运行 状态 更 改 为 就 绪 状 态 , 并 位 于 就 绪 列 表 中 。 更 高 优先 级 任务 运行 结束 后 ,继续运行原始任务。

运行 态 到 阻塞 态 : 正在 运行 的 任务 发 生 阻 塞(挂 起 、 延 时 、 读 信号 量 等 待 )时 , 该 任务 会 从 就 绪 列 表 中 删除 , 任 务 状态 由 运行 态 变 成 阻塞 态 , 然 后 发 生 任 务切换 , 运 行 就 绪 列 表 中 当前 最 高 优先 级 任务 。

阻塞 态 到 就 绪 态 : 阻塞 的 任务 被 恢复 后 (任务 恢复 、 延 时 时 间 超 时 、 读信号量 超 时 或 读 到 信号 量 等 ) 此 时 被 恢复 的 任务 会 被 加 入 就 绪 列 表 , 从 而 由 阻塞 态 变成就绪态***;如果此时被恢复任务的优先级高于正在运行任务的优先级,则会发生任务切换,将该任务将再次转换任务状态,由就绪态变成运行态。***

就绪态、阻塞态、运行态到挂起态:任务可以通过调用vTaskSuspend()API函数可以将处于任何状态的任务挂起,被挂起的任务得不到CPU的使用权,也不会参与调度,除非它从挂起态中解除。

挂起态到就绪态:把一个挂起状态的任务恢复的唯一途径就是调用VTaskResume()或vTaskResumeFromISR()API函数,如果此时被恢复任务的优先级高于正在运行任务的优先级,则会发生任务切换,将该任务将再次转换任务状态,由就绪态变成运行态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值