中断和异常的区别
1、异常:
是指CPU内部出现的中断,即在CPU执行特定指令时出现的非法情况。同时异常也称为同步中断,因此只有在一条指令执行后才会发出中断,不可能在指令执行期间发生异常。
产生的原因:
- 程序的错误产生的,编程异常通常叫做软中断(eg:除数为0)
- 内核必须处理的异常条件产生的(eg:缺页)
产生的目的:
Linux利用异常来达到两个截然不同的目的:
- 给进程发送一个信号以通报一个反常情况
- 管理硬件资源
对于第一种情况,例如,如果进程执行了一个被0除的操作,CPU则会产生一个“除法错误”异常,并由相应的异常处理程序向当前进程发送一个SIGFPE信号。当前进程接收到这个信号后,就要采取若干必要的步骤,或者从错误中恢复,或者终止执行(如果这个信号没有相应的信号处理程序)。
对于第二种情况,内核使用两种异常来有效地管理硬件资源,相应的处理程序也就更复杂。在这种情况下,异常并不表示一种错误情况:
- 用