HRTOS Documentation

上下文切换流程(Context Switch Flow)

上下文切换是RTOS在多任务环境中保存与恢复任务执行状态的核心机制, 决定系统多任务并发能力与实时响应性能。

System Context Switch Kernel Core

概述

上下文切换指CPU从一个任务切换到另一个任务时, 保存当前任务寄存器状态并恢复目标任务状态的过程。

工作原理

当发生调度事件(如时间片结束、任务阻塞或高优先级任务就绪)时, 内核触发上下文切换流程。

切换开销直接影响系统实时性,因此必须尽可能优化保存与恢复路径。

切换触发条件

HRTOS在以下情况下会触发上下文切换:

1. 时间片耗尽(Tick Expire) 2. 当前任务主动让出CPU(Yield) 3. 任务进入阻塞状态 4. 更高优先级任务就绪 5. 中断退出后触发调度
高优先级任务抢占是实时系统响应能力的重要保障。

执行路径

中断触发 / 主动让出CPU ↓ 进入调度器 ↓ 保存当前任务上下文 ↓ 更新就绪队列 ↓ 选择最高优先级任务 ↓ 恢复目标任务上下文 ↓ 返回任务继续执行

上下文切换本质上是任务状态保存与恢复流程, 同时伴随调度器重新选择最高优先级可运行任务。

关键接口 / 结构

os_schedule() os_context_switch() struct context { uint32_t sp; uint32_t pc; uint32_t regs[16]; }; struct task_control_block { struct context ctx; };

寄存器保存与恢复

切换过程中,CPU需要将当前任务寄存器状态保存到任务控制块(TCB), 并恢复下一个任务的寄存器上下文。

R0 - R12 SP LR PC xPSR
保存寄存器数量越多,上下文切换开销越高。

运行流程

触发调度 → 保存当前任务上下文 → 选择下一个任务 → 恢复目标任务上下文 → 返回用户态继续执行。

性能影响因素

上下文切换延迟受以下因素影响:

1. CPU寄存器数量 2. 调度器复杂度 3. 中断嵌套深度 4. 栈保存开销 5. Cache影响

HRTOS通过精简调度路径与优化寄存器保存策略降低切换延迟。

扩展说明

HRTOS支持硬件中断触发切换与软件调度切换两种模式, 并针对不同架构优化寄存器保存策略。