任务调度
- 抢占式调度:优先级高的抢占优先级低的,数字越大优先级越高。高优先级阻塞(系统延时或等待信号量等),低优先级会运行.被抢占的任务进入就绪态
- 时间片调度:针对优先级相同的任务,任务调度器会在每一次系统时钟节拍到的时候切换任务。同等优先级任务轮流享有相同的CPU时间,一个时间片等于一个systick中断周期。没有用完的时间片不会再使用(如运行了半个时间片阻塞,下次该任务得到执行还是从时间片头开始)
- 协程式调度:当前执行任务一直运行,高优先级不会抢占低优先级(官方不再更新)
任务状态
- 运行态:同一时间只有一个任务处于运行态
- 就绪态:该任务已经能被执行但仍未执行
- 阻塞态:延时或等待外部事件发生
- 挂起态:类似暂停,调用函数vTaskSuspend()进入挂起态,调用解挂函数vTaskResume()才可进入就绪态
- 四种状态除了运行态,其他都有对应的任务状态列表
:就绪列表:pxReadyTaskList[x],x数值代表任务优先级数值(0~31)
:阻塞列表:pxDelayedTaskList
:挂起列表:xSuspendedTaskList