
中断
中断是由硬件设备产生的,而它们从物理上说就是电信号,之后,它们通过中断控制器发送给CPU,接着CPU判断收到的中断来自于哪个硬件设备(这定义在内核中),最后,由CPU发送给内核,有内核处理中断。下面这张图显示了中断处理的流程:
异常
异常包括很多方面,有出错,有陷入,也有可编程异常。
- 出错保存的EIP指向触发异常的那条指令。因此,当从异常返回时,出错会重新执行那条指令,如我们熟悉的缺页异常,由于是fault,所以当缺页异常处理完成之后,还会去尝试重新执行那条触发异常的指令。
- 陷入保存的EIP指向触发异常的那条指令的下一条指令,陷入不会重新执行因为异常的指令。陷入的最主要的应用是在调试中,被调试的进程遇到你设置的断点,会停下来等待你的处理,等到你让其重新执行了,它当然不会再去执行已经执行过的断点指令。
- 可编程中断:这类中断可由编程者用int指令来触发。在Linux中,使用了一个,也是唯一的一个可编