HRTOS 学习模块

上下文切换基础(Context Switch Basics)

上下文切换(Context Switch)是实时操作系统中最底层、也是最关键的执行机制之一。 它决定了系统能否在多任务并发环境中维持“时间确定性”,并直接影响RTOS的实时性能边界。

Task Switching Kernel Core Deterministic Execution
本页面属于 HRTOS 学习体系中的 内核执行层。 学习路径结构: WHY层(为什么需要实时系统) → SYSTEM层(系统结构设计) → LEARN层(机制实现原理) → KERNEL层(底层实现) 当前章节: 上下文切换 = 实时系统最底层执行原语

一、什么是上下文切换

上下文切换是指CPU从一个任务切换到另一个任务执行时, 将当前任务的运行状态完整保存,并恢复目标任务运行状态的过程。 所谓“上下文”,本质上是任务执行现场的完整快照。

在RTOS中,每一个任务都被视为一个独立的执行流,它拥有自己的寄存器状态、栈空间以及执行指针。 当系统发生切换时,这些状态必须被严格保存,否则任务将无法从正确位置继续执行。

二、为什么需要上下文切换

单核CPU在同一时刻只能执行一个任务,但实际系统往往需要多个任务“并发运行”。 这种并发是通过快速切换实现的时间片交错执行。

上下文切换的本质作用是:在多个任务之间复用CPU,同时保证执行连续性。 如果没有它,多任务系统无法成立。

三、上下文包含哪些内容

通用寄存器

保存运算临时数据,是任务执行核心状态。

程序计数器(PC)

记录下一条执行指令地址。

栈指针(SP)

指向任务栈空间,是函数调用基础。

状态寄存器(PSR)

记录中断状态与执行模式。

四、上下文切换完整流程

1. 进入调度点 2. 保存CPU寄存器 3. 保存PC 4. 保存SP 5. 保存TCB状态 6. 选择下一个任务 7. 恢复SP 8. 恢复PC与寄存器 9. 返回执行

五、触发方式

时间片到期

定时器触发调度。

高优先级唤醒

高优先级任务抢占。

任务阻塞

任务主动放弃CPU。

中断触发

中断导致调度变化。

六、代价与影响

上下文切换包含寄存器保存、栈切换、TCB访问与缓存失效等开销。 切换越频繁,系统有效执行时间越少。

典型开销: - 寄存器保存/恢复 - 栈访问 - TCB读写 - Cache miss

七、本质总结

上下文切换本质是执行状态的迁移机制。 RTOS通过它实现多任务时间复用,并保证系统可预测性。

核心: 状态保存 + 调度决策 + 状态恢复 目标: - 不丢状态 - 可预测 - 有上界

系统关联路径