《深入理解计算机系统》读书笔记-08
第 8 章 异常控制流
异常的分类
异常分为中断、陷阱、故障和终止四类。
虽然做笔记应尽量避免抄书,但 p504 的表还是很值得放在笔记中的。
类别 | 原因 | 异步/同步 | 返回行为 |
---|---|---|---|
中断 | 来自 I/O 设备的信号 | 异步 | 总是返回到下一条指令 |
陷阱 | 程序故意设置的异常 | 同步 | 总是返回到下一条指令 |
故障 | 潜在可恢复的错误 | 同步 | 可能返回到当前指令 |
终止 | 不可恢复的错误 | 同步 | 不会返回 |
其中,中断与之前学过的单片机中经常使用的“中断”概念相差无几。这里要注意的就是,发生中断时,程序会继续执行当前指令,只有在当前指令执行完毕后,控制流才会跳转到中断处理程序。
其中的原因在于中断最后返回的地址是当前指令的下一条指令,如果在进入中断处理程序之前没有执行完当前指令,就会产生预期之外的错误。
并且要注意的是,四类异常当中,只有“中断”是异步的,其他异常都是同步的。