本文总结FreeRTOS 任务调度算法。 时间调度算法决定那个就绪状态的任务切换为运行状态。
该算法保证相同优先级的任务依次进入运行状态(采用’take it in turn ’ 策略)。
缺点: 不能保证相同优先级的任务执行时间是相等的,只能保证位于就绪状态的任务依次进入运行状态。
固定优先级抢占时间片调度算法。 ‘固定优先级’ 指 不改变任务的优先级。 ‘抢占’ 指的是当有更高优先级任务进入就绪状态(优先级高于当前执行任务的优先级), 当前执行状态的任务被抢占, 将有执行状态切换到就绪状态,处于就绪状态的更高优先级任务进入执行状态。 ‘时间片’ 用于具有同一个优先级的任务分享处理时间。
不带时间片的调度算法选择任务进入执行状态的策略:
更高优先级的任务进入就绪状态。处于执行状态的任务进入阻塞或挂起状态。不允许进行任务抢占。处于就绪状态的优先级任务还是先执行。
参考FreeRTOS 说明。 It is important to note that the end of a time slice is not the only place that the scheduler can select a new task to run; as will be demonstrated throughout this book, the scheduler will also select a new task to run immediately after the currently executing task enters the Blocked state, or when an interrupt moves a higher priority task into the Ready state
抢占:立即抢占当前真正执行的任务。 时间片调度:调度器在每个时间篇选择task执行。