os_switch 是 HRTOS 中最核心的调度函数之一,负责完成任务切换(Task Switch)。 在多任务系统中,CPU 需要在不同任务之间快速切换执行,而 os_switch 正是这一过程的执行入口。
该函数主要完成三件关键工作:保存当前任务执行上下文、选择下一可运行任务、恢复目标任务上下文。 这一过程也被称为“上下文切换(Context Switch)”,是实时操作系统实现并发执行的基础。
os_switch 的执行流程可以分为以下几个阶段:
1. 优先级调度
系统通过扫描任务状态数组,提取优先级字段,并选择最高优先级任务执行。 这种方式实现简单,同时具备较好的实时性。
2. 轻量轮转机制
当多个任务优先级相同时,系统引入简单轮转策略,避免任务长期占用 CPU, 提升整体调度公平性。
3. 上下文保存与恢复
任务切换的本质是 CPU 状态的切换,包括寄存器、栈指针等。 HRTOS 使用栈保存现场,通过汇编指令 POP 恢复寄存器,实现快速切换。
| 特性 | 说明 |
|---|---|
| 切换速度 | 基于寄存器栈恢复,执行效率高 |
| 实时性 | 支持优先级调度,响应快速 |
| 复杂度 | 实现简洁,适合嵌入式系统 |