对于中断,异常和陷阱的各种关系,总结如下:
表 2.1. 中断,异常和陷阱的区别和联系
对CPU来说是 | 和当前CPU所执行的指令的关系 | CPU接下来的事情 | 程序员和用户的态度 | ||
---|---|---|---|---|---|
中断 | 被动的 | 异步的 | 没关系 | 跳转到对应的ISR | 希望有对应的中断,以使得CPU可以响应对应的中断,执行对应的ISR |
异常 | 被动的 | 同步的 | 有关系,因为就是当前指令执行出问题,才有的异常 | 跳转到对应的异常处理 | 不希望出现异常,如果出现了,那往往是指令执行出现某些错误了 |
陷阱 | 主动的 | 同步的 | 有关系,就是执行当前软中断指令,才进入的软中断 | 执行对应的软中断处理函数 | 对于想要实现调试功能的程序员,有需要此陷阱的必要,其他人不用关心此点 |
下面,用图表总结了,中断,陷阱和异常的区别:
注意 | |
---|---|
无论是中断,还是异常和陷阱,对应的处理函数,一般都可以称其为中断服务程序ISR,都只是一个函数 具体函数里面要做什么事情,是由你写程序的人决定的 比如中断中处理对应的事情,异常中自己决定如何响应出现的异常,陷阱中决定做什么事情。 |