当前位置:文档之家› 中断和异常的区别

中断和异常的区别

4.异常和中断的区别:
1>异常:
是指CPU内部出现的中断,即在CPU执行特定指令时出现的非法情况。

同时异常也称为同步中断,因此只有在一条指令执行后才会发出中断,不可能在指令执行期间发生异常。

a.产生的原因:
程序的错误产生的(eg:除数为0)
内核必须处理的异常条件产生的(eg:缺页)
b.异常又分为故障和陷阱,它们都不使用中断控制器,也不能被屏蔽
c.X86处理处理器中大约有20中异常。

Linux内核必须为每种异常提供一个专门的异常处理程序。

2>中断:也称为异步中断。

因此它是由其他硬件设备依照 CPU 时钟信号随机产生,即意味着中断能在指令之间发生。

a.中断又分为外部可屏蔽中断(INTR)和外部非屏蔽中断(NMI)
所用I0设备产生的中断请求均引起可屏蔽中断
硬件故障引起的故障则产生非屏蔽中断。

John说明:
在CPU执行一个异常处理程序时,就不再响应其他异常和中断请求服务.那么如果此时发生了一个异常,CPU不能去响应它,又不能把它的信息丢失该怎么办呢?
这是就用到了堆栈,把所有的信息压入栈。

等当前异常处理后,才从堆栈中取出信息再响应刚才的异常。

(当产生多个非屏蔽中断时,CPU的处理方法同上)。

相关主题