FreeRTOS之任务管理
四种任务状态
1.就绪(Ready)
该任务在就绪列表中,就绪的任务已经具备执行的能力,只等 待调度器进行调度,新创建的任务会初始化为就绪态。
2.运行(Running)
该状态表明任务正在执行,此时它占用处理器,FreeRTOS 调 度器选择运行的永远是处于最高优先级的就绪态任务,当任务被运行的刻,它 的任务状态就变成了运行态。
3.阻塞(Blocked)
如果任务当前正在等待某个时序或外部中断,我们就说这个任 务处于阻塞状态,该任务不在就绪列表中。包含任务被挂起、任务被延时、任务 正在等待信号量、读写队列或者等待读写事件等。
4.挂起态(Suspended)
处于挂起态的任务对调度器而言是不可见的,让一个任务进 入挂起状态的唯一办法就是调用 vaskSuspend(0)函数;而 把,一 个 挂 起 状态的任务 恢复的 唯 一途 径就,是 调 用 vaskResume() 或vTaskResumeFromISR0函 数,我们可以这么理解样起态与阳基态的区别当任务有较长的时间不允许运行 的时候,我们可以挂起任务,这样子调度器就不会管这个任务的任何信息,直到 我们调用恢复任务的API 函数;而任务处于阻塞态的时候,系统还需要判断阻塞 态的任务是否超时,是否可以解除阻塞。
任务调度
任务调度的主要是靠链表执行
抢占式调度:1.高优先级的任务先执行。2.同等优先级的任务轮流执行。3.被抢占的任务会进入就绪态。