FREERTOS的三种调度方式
一、调度器的调度方式
调度器的调度方式 | 解释 | 针对的对象 |
---|---|---|
抢占式调度 | 1.高优先级的抢占低优先级的任务 2.高优先级的任务不停止,低优先级的任务不能执行 3.被强占的任务会进入就绪态 | 优先级不同的任务 |
时间片调度 | 1.同等优先级任务轮流享用CPU时间 2.没有用完的时间片,下次该任务仍使用1个时间片 3.1个时间片指的是1个滴答时钟的中断周期 | 优先级相同的任务 |
二、FREERTOS里的任务状态
FREERTOS里的任务状态 | 解释 |
---|---|
运行态 | mcu正在运行的任务(STM32同一时间只运行一个任务) |
就绪态 | 一个任务已经准备好被执行了,但是当前还未被执行 |
阻塞态 | 正在延时或者正在等待外部事件的任务,处于阻塞态 |
挂起态 | 得调用函数才能进入挂起态。挂起函数:vTaskSuspend(); 解挂函数:vTaskResume();解挂后进入就绪态 |
- 阻塞态想进入运行态,必须先转成就绪态,在进入运行态
三、任务状态列表
任务状态列表 | 解释 |
---|---|
就绪列表 | pxReadyTasksLists[x],x表示任务优先级。调度器从31到零,挨个检索,如果优先级变为1的话代表该优先级有任务。 |
阻塞列表 | pxDelayedTaskList |
挂起列表 | xSuspendedTaskList |