Skip to content

上下文切换模拟器使用指南

考情分析

上下文切换本身不常单独出大题,但"模式切换 vs 进程切换"的区分是 408 的高频易错点,几乎每两年就以选择题或判断题出现。很多同学知道"保存寄存器、恢复寄存器"这几个字,但脑子里没有画面——到底保存什么?保存到哪里?模式切换和进程切换有什么区别?

这个模拟器用三个场景把这些问题变成你亲眼看到的动画

考点你会在哪个场景看到考频
CPU 寄存器与 PCB 的关系探索结构🔥🔥
模式切换 vs 进程切换的区别模式切换🔥🔥🔥
上下文切换的完整步骤进程切换🔥🔥
切换开销与 CPU 利用率进程切换🔥🔥

按顺序走完三个场景大约 15 分钟。走完之后再看选择题,你不用死记硬背,靠画面就能选对。

加载可视化中...

场景一:探索结构

打开模拟器后默认进入这个场景。你看到的是三个核心结构:

一眼看懂的三件事

1. CPU 寄存器(中间大方框)

6 个寄存器槽位 + 底部 PSW 栏。这些就是进程运行时 CPU 里"活跃的数据":

寄存器作用考试怎么考
R0 - R3通用寄存器,存运算中间结果上下文切换时必须保存
PC程序计数器,下一条指令地址最常考——切换后从哪继续执行
SP栈指针,当前栈顶函数调用相关
PSW程序状态字,包含模式位模式切换的核心

2. PCB 卡片(左右两侧)

蓝色是进程 A 的 PCB,橙色是进程 B 的 PCB。每张卡片里有相同的 6 个寄存器行——这就是"寄存器保存区"。注意看:CPU 里的值和 PCB A 的值完全一样——因为当前是进程 A 在运行。

关键认知

CPU 寄存器里的值 = 当前运行进程的上下文。进程不运行时,这些值保存在它的 PCB 里。

3. 就绪队列(底部)

显示哪些进程在等待 CPU、哪个正在运行。进程 B 和 C 在就绪队列,进程 A 显示为"运行中"。

你应该注意的

  • CPU 寄存器值的颜色和当前运行进程一致(蓝色 = 进程 A),后面切换时颜色会变
  • PSW 底栏显示绿色"用户态"——模式位的可视化

场景二:模式切换(最重要的场景)

点击"模式切换"标签,进入本模拟器最核心的场景——因为它对应的是 408 最常出错的考点。

这个场景在演示什么

进程 A 执行 read() 系统调用:用户态 → 内核态 → 用户态。全程只有进程 A,没有任何进程切换。

六个阶段

每一步都可以用 ⏮ / ⏭ 手动推进:

阶段你能看到什么重点观察
① 用户态运行CPU 显示 A 的值,PSW 绿色"用户态"正常运行状态
② 系统调用CPU 下方出现"系统调用 read()"系统调用是主动进入内核的方式
③ 模式切换PSW 从绿变红,"核心态",上方出现"模式切换"标签只有 PSW 变了!寄存器值没动!
④ 内核执行CPU 方框出现淡红遮罩内核在核心态处理 read()
⑤ 返回用户态PSW 从红变回绿,"用户态"又一次模式切换(反向)
⑥ 继续运行和第①步完全一样进程 A 像什么都没发生一样继续执行

关键观察:寄存器值始终没有变

从①到⑥,CPU 里的寄存器值始终是 0x0A01、0x0A02...。没有任何值被保存到 PCB,也没有从其他 PCB 恢复。这就是模式切换的本质——只改 PSW 模式位,不动寄存器

对比场景三,你会看到完全不同的情况。

右侧面板的对比表

场景二右侧始终显示一张"模式切换 vs 进程切换"对比表。建议截图保存,考前翻一遍:

模式切换进程切换
触发系统调用、中断、异常时间片到、阻塞、抢占
操作仅改 PSW 模式位保存/恢复整个 PCB
开销
关系进程切换 ⊃ 模式切换

四条必记结论

右侧"易错点"区域列出了四条判断题常考的结论:

  1. 系统调用一定引起模式切换 ✓
  2. 系统调用不一定引起进程切换 ✓
  3. 进程切换一定包含模式切换 ✓
  4. 模式切换不一定伴随进程切换 ✓

这四条不用死记——看完场景二和场景三的对比,它们就是显而易见的。

场景三:进程切换

点击"进程切换"标签。这个场景多了进程 C(绿色 PCB),底部出现 CPU 时间分配条。

这个场景在演示什么

进程 A 时间片用完 → 中断 → 内核保存 A 的寄存器 → 调度器选 B → 恢复 B 的寄存器 → B 运行。完整的上下文切换。

八个阶段

阶段你能看到什么对比场景二
① 进程 A 运行CPU 蓝色,PSW 绿色和场景二①一样
② 时钟中断CPU 闪烁红色遮罩,"时钟中断"场景二是主动系统调用,这里是被动中断
③ 进入内核PSW 变红和场景二③一样——都是模式切换
保存上下文CPU 寄存器值"飞"到左侧 PCB A 卡片⭐ 场景二没有这一步!
⑤ 调度决策"调度器选择下一个进程",PCB B 高亮场景二没有这一步
恢复上下文PCB B 的值"飞"回 CPU,CPU 变橙色⭐ 场景二没有这一步!
⑦ 返回用户态PSW 变回绿色和场景二⑤一样
⑧ 进程 B 运行CPU 橙色,就绪队列更新场景二始终是进程 A

重点看第④和第⑥步

第④步保存:6 个彩色方块从 CPU 飞向 PCB A——这就是"保存上下文到 PCB"。

第⑥步恢复:6 个彩色方块从 PCB B 飞回 CPU——CPU 寄存器值全部换成 B 的(0x0B01、0x0B02...),颜色从蓝变橙。

这两步就是进程切换比模式切换多出来的开销。 场景二里这两步不存在,所以模式切换开销小。

继续切换:观察开销累积

到第⑧步后,右下角出现"继续切换"按钮。点击后开始下一轮:B → C。

每轮切换后,右侧面板和底部时间条会更新:

指标1 次切换后2 次切换后3 次切换后
切换次数123
有效工作10 单位15 单位20 单位
切换开销3 单位6 单位9 单位
CPU 利用率76.9%71.4%69.0%

注意利用率在下降——切换越频繁,浪费在"搬寄存器"上的时间越多。

底部时间分配条

彩色横条直观展示 CPU 时间去哪了:

[  A 蓝色  ] [灰色切换] [  B 橙色  ] [灰色切换] [  C 绿色  ]

灰色段就是纯开销——CPU 在做家务(搬寄存器),不干正事。时间片越短,灰色段占比越高。

考试公式

右侧始终显示:

CPU =qq+δ

其中 q = 时间片长度,δ = 上下文切换开销。

计算题典型问法

时间片 = 20ms,上下文切换 = 5ms,求 CPU 利用率。

答:2020+5=80%

如果时间片改为 5ms:55+5=50% ——利用率直接腰斩。

在模拟器里多点几次"继续切换",看利用率数字一步步下降,比背公式记得牢。

三个场景的对比总结

走完三个场景后,你脑子里应该有这张清晰的对比图:

场景二:模式切换场景三:进程切换
PSW 变色✓ 绿→红→绿✓ 绿→红→绿
寄存器值搬运✗ 没有✓ CPU↔PCB 飞行动画
CPU 颜色变化✗ 始终蓝色✓ 蓝→橙
就绪队列变化✗ 不变✓ 进程轮换
开销小(只改 PSW)大(保存+调度+恢复)

一句话总结:模式切换只是"换帽子"(PSW 变色),进程切换是"换人"(寄存器全搬)。

推荐使用流程

第一轮:建立直觉(8 分钟)

  1. 探索结构(2 分钟):看 CPU 寄存器和 PCB 卡片的对应关系,注意值和颜色
  2. 模式切换(3 分钟):0.5x 慢速走完 6 步,重点看 PSW 颜色变化,确认寄存器值不动
  3. 进程切换(3 分钟):0.5x 慢速走完 8 步,重点看第④⑥步的飞行动画

第二轮:对比记忆(5 分钟)

  1. 回到场景二,快速走完,在第③步暂停——PSW 变红,寄存器没动
  2. 切到场景三,走到第④步暂停——PSW 变红,而且寄存器在搬运
  3. 对比右侧面板:场景二写"仅模式切换",场景三写"保存上下文到 PCB"
  4. 这个对比就是考试要你分清的东西

第三轮:做题验证(按需)

拿一道选择题,心里回忆场景画面,然后选答案。比如:

"中断处理一定会引起进程切换吗?"

回忆场景二:系统调用(也是一种中断)只引起了模式切换,进程 A 从头到尾没换。答案:不一定。

考研高频考点速览

考点考频关键记忆
模式切换 vs 进程切换🔥🔥🔥模式切换只改 PSW;进程切换保存/恢复整个 PCB
系统调用与模式切换的关系🔥🔥🔥系统调用一定模式切换,不一定进程切换
上下文切换保存的内容🔥🔥PC、PSW、通用寄存器、栈指针 → 全部保存到 PCB
切换开销与时间片的关系🔥🔥CPU 利用率 = q/(q+δ),时间片越短利用率越低
PCB 是进程存在的唯一标志🔥🔥进程创建时建 PCB,终止时撤 PCB
一次进程切换包含两次模式切换🔥用户→内核(处理中断)→ 用户(新进程运行)

真题练习

相关真题(4题)

2025Q24选择题2分

上下文切换:中断向量表是系统全局的,切换时不需要更新

2022Q25选择题2分

进程切换:需要更新PC、栈基址、页表基址等所有进程上下文

2018Q45综合题8分

综合题:虚拟地址计算、PDBR特性、改进CLOCK页表项字段

2012Q23选择题2分

进程切换:必须在内核态执行,不可能在用户态发生