概述
Round Robin(RR)通过固定时间片在同优先级任务之间轮转执行, 避免单任务长期占用CPU。
在 HRTOS 中,RR 通常与优先级调度结合形成混合调度模型, 用于提升系统公平性与吞吐能力。
工作原理
系统维护循环就绪队列,任务按顺序执行,每次分配固定时间片。
时间片耗尽或任务主动让出CPU时触发调度切换。
Tick中断递减时间片计数器,当归零后任务进入队列尾部, 调度器选择下一个任务执行。
调度模式(Scheduler Mode)
extern char os_scheduler_mode_switch(unsigned char id);
// 1:实时模式(优先级调度)
// 高优先级就绪立即抢占,不执行低优先级任务
// 0:通用模式(时间片轮转)
// 同优先级按时间片轮转执行,保证公平性
// 优先级越高时间片越多(priority + 1),最低优先级也至少1片
extern char os_set_scheduler(unsigned char id);
// 1:HRTOS默认实时调度模式
// 0:MYOS用户策略模式(允许自定义调度行为)
实时模式用于强时间约束场景;通用模式用于吞吐与公平性场景。
关键接口 / 结构
extern char os_tick_config(u8 slice_count, u16 tick_value);
// 设置系统Tick配置:时间片数量 + Tick粒度
// 系统调度核心初始化接口(必须)
extern void os_tick_get(u16 *high, u16 *low);
// 获取当前系统Tick计数(高低32位扩展)
// 用于调度分析 / 时间统计 / 性能测量
extern u32 os_uptime_ms();
// 获取系统开机运行时间(毫秒)
// 用于系统运行监控 / 健康检测
RR通过时间片与队列管理实现调度控制,并依赖Tick中断驱动运行。
运行流程
task enqueue
↓
dispatch
↓
execute
↓
tick decrement
↓
timeslice expire
↓
move to tail
↓
next task
调度在Tick或yield触发时发生,保证轮转公平性。
扩展说明
RR通常用于同优先级任务调度,与优先级调度组合构成混合模型。
在实时模式下RR被优先级调度覆盖,在通用模式下RR成为主调度策略。