200字
RTOS时间片调度
2024-03-05
2026-03-23

RTOS时间片调度

时间片调度

同等优先级任务轮流地享有相同的 CPU 时间(可设置), 叫 时间片 ,在FreeRTOS中,一个时间片就等于SysTick 中断周期

image

运行条件:

  1. 创建三个任务:Task1、Task2、Task3

  2. Task1、Task2、Task3的优先级均为1;即3个任务同等优先级

运行过程如下:

  1. 首先Task1运行完一个时间片后,切换至Task2运行

  2. Task2运行完一个时间片后,切换至Task3运行

  3. Task3运行过程中(还不到一个时间片),Task3阻塞了(系统延时或等待信号量等),此时直接切换到下一个任务Task1

  4. Task1运行完一个时间片后,切换至Task2运行

注意:

  1. 同等优先级任务,轮流执行,时间片流转。
  2. 一个时间片大小,取决为滴答定时器中断频率。
  3. 注意没有完成的时间片不会再使用,下次任务Task3得到执行还是按照一个时间片的时钟节拍执行。

image

注意:使用时间片调度需把宏 configUSE_TIME_SLICING 和 configUSE_PREEMPTION 置1

一个时间片就等于SysTick 中断周期

修改时间片长度就是修改系统节拍

freertos_config.h

#define configTICK_RATE_HZ 1000 /* 定义系统时钟节拍频率, 单位: Hz, 无默认需定义 */

默认1000hz 即为1ms

改为20hz 即为500ms

评论