1. 核心定义

  • 异常 (Exception)内部产生的意外(如除零、非法指令、缺页、溢出、系统调用)。同步发生。
  • 中断 (Interrupt)外部设备的请求(如键盘输入、磁盘就绪)。异步发生。

2. 硬件处理流程

当异常发生时,CPU 必须“停下手里的活”:

  1. 关中断:防止嵌套中断破坏现场。
  2. 保存现场:将当前 PC 保存到 EPC (Exception PC),状态保存到 Cause 寄存器。
  3. 跳转:PC 指向异常处理程序入口(通常是固定地址,如 MIPS 的 0x80000180)。
  4. 执行处理程序:操作系统接管。
  5. 恢复现场:处理完后,从 EPC 恢复执行。

3. 这里的坑 (Traps)

  • EPC 指向哪里?
    • 如果是 Fault (如缺页),EPC 指向当前指令(处理完后重试)。
    • 如果是 Trap (如系统调用) 或 Interrupt,EPC 指向下一条指令(处理完后继续)。
  • 精确异常:CPU 必须保证异常指令之前的所有指令都已提交,之后的指令都未执行。乱序执行 CPU 实现这一点非常难。

4. 关联链接

  • 操作系统:用户态切换到内核态的物理机制。
  • Rootkit原理:通过修改中断向量表 (IDT) 劫持系统调用。