概述
Scheduler Tick由硬件定时器周期触发,是系统时间的唯一来源。 它驱动延时队列更新、时间片递减与调度决策。
没有Tick,系统无法进行时间推进,也无法实现Delay与时间片轮转调度。
Tick频率决定系统精度与开销的平衡(1kHz~10kHz典型范围)。
工作原理
每次Tick中断触发时,系统递增全局tick计数器, 并依次执行延时队列检查、时间片更新与调度触发。
延时队列按expire_tick排序,到期任务从BLOCKED切换到READY。
时间片递减用于Round Robin调度,同优先级任务公平切换。
关键接口 / 结构
os_tick_config:初始化系统Tick,配置时间片数量与硬件定时器周期。
初始化流程:清零tick计数 → 设置时间片 → 配置定时器 → 启动系统节拍。
os_tick_get:读取当前系统tick(高16位+低16位)。
os_uptime_ms:返回系统运行时间(毫秒)。
os_ms_to_tick:毫秒转换为tick。
os_sec_to_tick:秒转换为tick。
os_delay:tick级任务阻塞延时。
os_delay_ms:忙等待延时(不参与调度)。
运行流程
Timer Interrupt → Tick++ → Delay Check → TimeSlice Update → Scheduler
到期任务唤醒后进入READY队列,由调度器选择执行。
扩展说明
Tickless模式可在空闲时关闭周期中断以降低功耗。
Tick频率越高精度越高,但ISR开销也增加,需要权衡设计。
- 职责:系统时间基准
- 机制:硬件定时器 + ISR
- 驱动:Delay / Scheduler / Timer
- 优化:Tickless / 低开销ISR