Skip to content

2020年 408 计算机组成原理 第 18 题

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

题目

下列关于"自陷"(Trap,也称陷阱)的叙述中错误的是( )。

错因

B

不熟自陷的应用场景。自陷是断点(int3 / GDB)和单步执行的实现基础——调试器替换某条指令为陷阱指令;当 CPU 执行到此处就触发自陷,控制权交给 OS/调试器。B 是对的叙述。

C

误以为自陷在用户态处理。但自陷的处理程序在 OS 内核——和系统调用一样,自陷会切换到内核态,让 OS 决定如何响应(执行系统调用入口、调试器回调等)。C 是对的叙述。

D

误以为自陷与缺页一样要"重新执行"。但自陷与缺页的区别:陷阱指令本身就是"主动触发陷阱"——它的语义就是"陷",已经"完成"。所以处理完返回下一条指令,与缺页(重启原指令)不同。D 是对的叙述。

总解析

异常类型分类

类型触发源是否同步与具体指令绑定
中断(外部)外部硬件信号(时钟、键盘、网卡)异步
异常(内部)CPU 执行指令时检测到的内部事件同步

异常细分:

异常子类触发条件处理后回到
故障(Fault)指令执行被检测(缺页、保护违例)重启该指令
自陷(Trap)主动触发的陷阱指令(int3, syscall, debug)下一条指令
终止(Abort)不可恢复的硬件错误终止程序

逐项判断

选项叙述判断理由
A自陷是通过陷阱指令预先设定的一类外部中断事件✗ 错自陷是内部异常(由指令主动触发),不是外部中断
B自陷可用于断点和单步跟踪✓ 对调试器机制依赖自陷
C自陷发生后 CPU 转去执行 OS 内核相应程序✓ 对内核态处理
D自陷处理完后返回陷阱指令下一条指令✓ 对Trap 类异常的处理方式

A 为什么错——自陷是内部异常

维度外部中断自陷(Trap)
触发源外部硬件 信号(时钟、I/O 设备)CPU 执行陷阱指令时主动触发
同步性异步(与当前指令无关)同步(绑定到陷阱指令本身)
是否可屏蔽部分可屏蔽(IF 标志位)不可屏蔽(指令执行就一定发生)
例子时钟中断、键盘中断、网卡中断int3(断点)、syscall(系统调用)、单步标志

虽然自陷"用陷阱指令显式触发"看起来很像中断,但它本质上是 CPU 内部执行某条指令的直接结果——属于内部异常而非外部中断

最终答案是 A(错误的叙述)。

自陷的典型用例

用例实现
系统调用int 0x80 / syscall 指令触发自陷,OS 接管
断点调试调试器把某条指令替换为 int3,命中时触发
单步跟踪设置 EFLAGS.TF 标志,每条指令后自动触发自陷
算术陷阱浮点异常、溢出陷阱(IEEE 754 例外)

易错点速查

  1. 自陷 = 内部异常,不是外部中断(虽然两者处理流程相似)
  2. 自陷 vs 缺页:自陷返回下一条(陷阱指令已完成),缺页重启原指令(指令未完成)
  3. 自陷处理在内核态,由 OS 接管

最后更新:

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