异常和中断

问题描述:

当我在寻找异常和中断的区别, 我发现这个问题Interrupts and exceptions上SO ...异常和中断

一些答案有不适合(至少在汇编级):

“异常是软件版本的中断”但是存在软件中断!
“中断是异步的,但异常是同步的”对不对?
“中断经常发生”
“中断的硬件实现的陷阱,例外软件实现”同上!


我需要找到,如果一些这些答案是正确的,也是我将不胜感激,如果有人可以提供一个更好的答案...

谢谢!

中断通常是一种通知硬件状态发生变化的方法。外围设备将通过电信号连接到中断控制器,该中断控制器为每个可能的信号分配地址向量的优先级和分配地址。中断控制器将检测到的中断条件转发给CPU,中断条件可以或不可以“中断”其当前执行状态以处理发信号通知的状态改变(取决于中断是否被使能和/或该特定输入是否是不可屏蔽的)。在硬件输入之外,中断条件可能在某些体系结构中由软件启动(例如在x86上有一个int助记符)。

异常涉及更大范围的实施。在一些CPU架构(如68K)中,异常可能与中断类似,但是由某些需要处理的CPU状态生成。例如,存在产生异常的条件,例如除以零,非法指令,I/O总线超时等。通过处理这些例外,可以做一些事情,例如模拟指令并虚拟扩展指令集。

异常也可能是纯软件概念,例如在C++语言中可能会捕获和处理某些错误条件。

因此,一般来说,您试图找到有效性的陈述可能是真或假,具体取决于您应用的确切平台。

最常使用的一个例外是编程语言中的一种控制流程,用于处理程序正常逻辑流程之外的事件,以避免程序的业务逻辑在错误处理逻辑中淹没。异常的“处理”是特定于上下文的。它更像是一种GoTo,适用于许多有用的用例。

中断是硬件辅助的“陷阱”,当某些事件发生时触发某些操作,如计时器滴答或程序“调用”INT21。有一个处理程序注册了一些预定义的东西。

两者可能是也可能不是同步的或异步的。