Skip to content

2026年 408 操作系统 第 24 题

操作系统2026年选择题2分

题目

在支持虚拟存储器系统下的指令执行过程中,正确的是( )。

错因

A

把"地址转换"和"页表管理"搞混了。OS 确实负责建立和维护页表(装入进程时填表、缺页时换页),但指令执行过程中每条访存指令的虚→实地址翻译是由 MMU 硬件(含 TLB)完成的。如果每次访存都要陷入 OS 软件翻译一遍,性能会慢几个数量级——这正是 MMU 存在的意义。选 A 的人混淆了"谁建表"和"谁查表"。

B

把"编译"阶段误当成"装入"阶段。编译器只生成相对地址(虚地址或符号地址),它不知道程序最终会被装入到哪个物理页框。页表项中真正的物理页框号、有效位、保护位、修改位等内容,是 OS 在装入进程或缺页处理时动态填写的。如果由编译器决定,多个进程同时跑就会互相覆盖物理内存。

C

熟悉"中断由硬件触发"的人容易跳一步:硬件触发 ⇒ 硬件处理。但实际是分工:MMU 在地址转换时发现页表项无效(present=0),硬件产生缺页异常(这一步是硬件做的),随后控制权转给 OS 的缺页中断处理程序——查找空闲页框、可能触发置换、读盘装入、修改页表,全是 OS 软件完成的复杂动作。硬件不可能"直接处理"缺页,因为缺页处理涉及磁盘 I/O 和内存分配,这都是 OS 的事。

总解析

判定思路:抓住"虚存系统中谁做哪一步"的标准分工:

阶段谁做做什么
程序编译编译器(用户态工具)生成相对/虚地址;触碰页表项
程序装入OS(内核态)分配物理页框、建立页表、填写页表项
指令执行时的地址转换硬件 MMU + TLB虚地址 → 物理地址
缺页 / 越权 / 非法指令硬件检测 → OS 处理硬件产生异常信号;OS 异常处理程序响应

逐项核对:

  • A 错:地址转换由 MMU 硬件完成,不是 OS。
  • B 错:页表项由 OS 填写,不是编译器。
  • C 错:缺页只是硬件触发异常,真正"处理"——找空闲页框、触发置换、读盘、改页表——是 OS 软件做的。
  • D 对:所有异常(缺页、越权、非法指令、除零等)都遵循"硬件检测 → 触发异常 → OS 处理"的模式。

一句话归纳:简单/高频的操作交硬件做(MMU 翻译地址),复杂/罕见的处理交 OS 做(异常、缺页、I/O)——这是"软硬件协同"的设计哲学。

最终答案是 D

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题