number headings: auto, first-level 2, max 6, 1.1
2 任务调度
2.1 基本特性
2.1.1 任务调度原则
FreeRTOS默认使用固定优先级的抢占式调度策略,其基本原则如下:
- 高优先级任务可以在任何时刻抢占低优先级的任务。
- 同优先级任务之间使用时间片轮转调度算法,每个任务轮流执行一个时间片。
- 当某任务释放CPU时,不用等待该时间片用完即可调度到下一个任务。
高优先级需要主动释放CPU(例如等待或请求资源等)才能避免低优先级任务饿死。
在FreeRTOS中,优先级数值越大,优先级越高。
2.1.2 任务状态
- 运行态
- 就绪态
- 阻塞态:线程等待资源时为阻塞态。
- 挂起态:使用
vTaskSuspend()
可以将任务暂停进挂起态,使用 vTaskResume()
可以使任务解除挂起。
与大多数操作系统中一致,只有就绪态可以转换为运行态。