Skip to content

2025年 408 操作系统 第 23 题

操作系统2025年选择题2分

题目

在采用页式虚拟存储管理方式的系统中,当发生上下文切换时,下列寄存器中操作系统不需要更新的是( )。

错因

A

把"通用寄存器和当前进程无关"当成想当然的事实。通用寄存器(如 x86 的 EAX/EBX、RISC 的 r1~rN)每个进程都用得不一样——A 进程算到一半的中间结果就在这些寄存器里。切到 B 进程之前必须把 A 的通用寄存器全部存回它的 PCB,再把 B 上次保存下来的通用寄存器写回 CPU,否则 B 一跑就会拿到 A 残留的脏数据。"通用寄存器是 OS 不管的"是错觉。

B

漏掉了"页式虚存"这个前提。每个进程有自己独立的页表,存在主存某个物理地址;CPU 通过**页表基址寄存器(PTBR / CR3)**找到当前进程的页表。切换进程时,新旧进程页表的物理位置完全不同——若不更新 PTBR,新进程会按旧进程的页表去翻译地址,立刻拿到错误的物理页。所以 PTBR 必须更新(同时还得刷 TLB,但这是另一回事)。

C

把"PC 是硬件自动管的"和"OS 不需要管 PC"混为一谈。PC(程序计数器)记录下一条指令地址——A 进程被切走时,它走到哪一行必须由 OS 保存进 PCB,下次再调度回 A 时再写回 PC,A 才能从断点继续。如果不更新 PC,切换回来 CPU 就会从错误的位置取指,等于程序乱跳。

总解析

判定原则:上下文切换中,"需要更新的寄存器" = "因进程而异、各进程值不同"的寄存器;"不需要更新的" = "整个系统全局共享、所有进程都一样"的寄存器。

逐项分析:

选项寄存器因进程而异?切换时是否更新
A通用寄存器(GPR)是(进程的运算中间值)要更新(保存旧进程到 PCB,载入新进程)
B页表基址寄存器(PTBR/CR3)是(每进程独立页表)要更新(指向新进程页表的物理地址)
C程序计数器(PC)是(每进程执行点不同)要更新(保存断点 + 恢复新进程断点)
D内核中断向量表基址寄存器(系统全局共享)不需要更新

关键认知:中断向量表是整个 OS 内核唯一的一份——它记录了"中断号 i → 中断处理程序入口地址"的映射,所有进程进入内核处理中断/异常/系统调用时都查同一张表。其基址寄存器(如 x86 的 IDTR)在系统初始化时由 OS 写好,此后只要不重启或不进入多核迁移等极端情形,永远不变。换进程,跟它没关系。

口诀:"进程私有的要换,全局共用的不动"

最终答案是 D

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数