Appearance
题目
下列事件中属于外部中断事件的是( )。
I、访存时缺页;
II、定时器到时;
III、网络数据包到达;
错因
A
把 Ⅰ(缺页)当成外部中断。但缺页是内部异常——CPU 在执行某条指令的地址转换时检测到的同步事件,与具体指令绑定。外部中断是异步事件、与指令无关。混淆了"中断"和"异常"。
B
同 A 的错(把缺页当外部中断),同时漏掉 Ⅱ(定时器)。定时器是 CPU 外的硬件计数器溢出后发中断信号给 CPU,明显是外部中断。
D
把三个全选——把缺页也当成外部中断(错)。三选一陷阱:看起来都是"系统层面的事件",但缺页是 CPU 内部的指令执行结果,不是外部硬件触发。
总解析
外部中断 vs 内部异常的核心区分:
| 维度 | 外部中断 | 内部异常 |
|---|---|---|
| 触发源 | CPU 外部硬件 信号 | CPU 执行某指令时 内部检测到的事件 |
| 同步性 | 异步(与当前指令无关) | 同步(与具体指令绑定) |
| 是否可屏蔽 | 部分可屏蔽(IF 标志位) | 不可屏蔽 |
| 例子 | 时钟、键盘、网卡、DMA 完成 | 缺页、除零、非法指令、自陷 |
逐项判断:
| 项 | 事件 | 触发源 | 类型 | 是外部中断? |
|---|---|---|---|---|
| Ⅰ | 访存时缺页 | CPU 内 MMU 检测到页表项无效 | 内部异常 | ✗ |
| Ⅱ | 定时器到时 | 外部硬件(系统定时器溢出) | 外部中断 | ✓ |
| Ⅲ | 网络数据包到达 | 外部硬件(网卡接收到帧) | 外部中断 | ✓ |
最终答案是 C(仅 Ⅱ、Ⅲ)。
逐项详解:
Ⅰ 缺页:CPU 在执行 LOAD/STORE 等访存指令时,MMU 查页表发现"虚地址对应页不在主存"。这是 CPU 内部的、由该具体指令直接触发的事件——属于内部异常(具体说是故障 Fault),不属于外部中断。
Ⅱ 定时器到时:硬件定时器(如系统时钟芯片)独立于 CPU 计时,到时后发中断信号给 CPU,CPU 在当前指令完成后响应。来源是 CPU 外部硬件 → 外部中断。
Ⅲ 网络数据包到达:网卡硬件接收到一个数据包(Ethernet 帧)后,向 CPU 发中断信号通知它。来源是 CPU 外部硬件 → 外部中断。
异常 vs 中断完整分类:
异常事件
├── 中断(Interrupt) —— 异步、外部
│ ├── 可屏蔽中断(IRQ)—— 时钟、键盘、网卡、磁盘
│ └── 不可屏蔽中断(NMI)—— 严重硬件错误
└── 异常(Exception) —— 同步、内部
├── 故障(Fault)—— 缺页、保护违例(处理后重启原指令)
├── 自陷(Trap)—— 系统调用、断点(处理后下一条)
└── 终止(Abort)—— 硬件级不可恢复错误(终止程序)易错点速查:
- 缺页 = 内部异常,不是外部中断
- 定时器 = 外部硬件(不是 CPU 内部的"时钟周期计数"),是外部中断
- 网络包到达 = 网卡硬件触发,是外部中断
- 判定方法:源头在 CPU 外就是外部中断;在 CPU 内就是内部异常