Skip to content

2015年 408 计算机组成原理 第 22 题

计算机组成原理2015年选择题2分

题目

内部异常(内中断)可分为故障(fault)、陷阱(trap)和终止(abort)三类。下列有关内部异常的叙述中,错误的是( )。

错因

A

A 是正确叙述——内部异常的全部三类(fault/trap/abort)都由当前指令的执行直接引发:fault 是指令执行中发现条件不满足(缺页、保护违规);trap 是指令本身就是异常指令(INT、syscall、断点);abort 是执行中发现严重错误。三类都"与当前指令相关",说法成立。

B

B 也正确。内部异常全部由 CPU 内部电路检测——MMU 检测缺页 / 保护违规,ALU 检测除 0 / 溢出,控制器检测非法指令 / 特权违规。没有外部信号参与。

C

C 也正确——内部异常的响应不是像外中断那样在指令边界(指令结束之后)才响应,而是在指令执行过程中就被发现并立即响应。例如除 0 是 ALU 算出来的瞬间就抛异常,缺页是 MMU 翻译失败的瞬间就抛——根本不会等指令"完成"再处理(很多时候指令也无法完成)。

总解析

核心:故障 / 陷阱 / 终止三类返回行为

408 真题考"内部异常"几乎必考它们的返回点差异:

类型例子异常处理后返回到
故障 fault缺页、保护违规处理后返回到当前指令重新执行(修复条件后再来一次)
陷阱 trapINT n、syscall、单步调试处理后返回到下一条指令(当前指令本身就是异常指令,已经"完成")
终止 abort机器检查、严重硬件错误不返回(程序终止)

逐项审计

选项三类异常都满足吗?
A "与当前指令相关"fault/trap/abort 都与当前指令有关 → ✓
B "由 CPU 内部逻辑检测"都由 CPU 内部电路检出 → ✓
C "响应发生在指令执行过程中"都是指令执行中检测出来 → ✓
D "返回到发生异常的指令继续执行"仅 fault 满足;trap 返回到下一条;abort 不返回

D 错在把所有内部异常都当成了 fault 类——而陷阱(如 INT 软中断)和终止(如机器检查)都不是返回到原指令:

  • 陷阱INT 80h 这条指令本身就是要触发异常的,处理完没必要再执行一次(再执行就死循环了),自然返回到下一条
  • 终止:异常严重到程序无法继续,直接 kill,根本不存在"返回"

最终答案是 D(这是错误叙述)

记忆口诀

fault  → 修了再来   (返回当前指令重做)
trap   → 做完往下走 (返回下一条指令)
abort  → 一去不返   (终止程序)

考场上看到"返回到发生异常的指令"这种统括式说法,立刻意识到只有 fault 这一类成立——出现在"内部异常"统称下就是错的。

最后更新:

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