OS-异常与中断
异常与中断
Related: 系统调用接口
1. 核心定义
异常 (Exception) 是控制流中的突发改变,用来响应处理器状态的某些变化。
- 它是硬件 (CPU) 与操作系统 (OS) 协同工作的交点。
- 异常表 (Exception Table): 系统启动时分配的一张跳转表,记录了每种异常对应的处理程序 (Exception Handler) 地址。
2. 四大分类 (The Taxonomy)
| 类别 | 原因 | 行为 (同步/异步) | 返回行为 | 示例 |
|---|---|---|---|---|
| 中断 (Interrupt) | 来自处理器外部 I/O 设备的信号 | 异步 (随时可能发生) | 返回到下一条指令 | 键盘 Ctrl+C, 磁盘数据到位, 网络包到达 |
| 陷阱 (Trap) | 有意的指令执行 | 同步 | 返回到下一条指令 | 系统调用 (System Calls), 断点 (int 3) |
| 故障 (Fault) | 潜在可恢复的错误 | 同步 | 重新执行当前指令 | 缺页异常 (Page Fault) |
| 终止 (Abort) | 不可恢复的致命错误 | 同步 | 不返回 (终止程序) | 硬件校验错误 (RAM 坏了) |
3. 安全视角 (Security Insight)
- Shellcode 原理: 所有的 Shellcode 最终目的都是为了触发 Trap (系统调用),通常是
execve("/bin/sh")。 - 调试器原理: GDB 的断点通过插入
int 3指令触发 Trap,让 OS 暂停程序并将控制权交给调试器。 - 拒绝服务 (DoS): 触发不可恢复的 Abort 或死循环的 Fault。