运行条件:

这里仅对时间片调度进行说明。

创建 4 个同优先级任务 Task1,Task2,Task3 和 Task4。

每个任务分配的时间片大小是 5 个系统时钟节拍。

运行过程描述如下:

先运行任务 Task1,运行够 5 个系统时钟节拍后,通过时间片调度切换到任务 Task2。

任务 Task2 运行够 5 个系统时钟节拍后,通过时间片调度切换到任务 Task3。

任务 Task3 在运行期间调用了阻塞式 API 函数,调用函数时,虽然 5 个系统时钟节拍的时间片大小还没有用完,此时依然会通过时间片调度切换到下一个任务 Task4。 (注意,没有用完的时间片不会再使用,下次任务 Task3 得到执行还是按照 5 个系统时钟节拍运行)

任务 Task4 运行够 5 个系统时钟节拍后,通过时间片调度切换到任务 Task1。

上面就是一个简单的同优先级任务通过时间片调度进行任务调度和任务切换的过程。

Summary:

时间片调度和抢占式调度我们一般都是开启了的,这样优先级相同时,使用时间片调度,优先级不同时,使用抢占式调度。默认情况下,在freertos.h中使能了时间片调度:

freertos移植教程_freertos任务调度原理

而抢占式调度需要我们用户自己开启,一般在freertosconfig.h中使能:

freertos移植教程_freertos任务调度原理

小编推荐阅读:

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查