当我在寻找异常和中断之间的区别时,我发现了这个问题Interrupts and exceptions on SO...
那里的一些答案不合适(至少对于装配级别):
“例外是软件版本的中断” 但是存在软件中断!
“中断是异步的,但异常是同步的” 对吗?
“定期发生中断”
“中断是硬件实现的陷阱,异常是软件实现的” 同上!
我需要找出其中一些答案是否正确,如果有人能提供更好的答案,我将不胜感激......
谢谢!
当我在寻找异常和中断之间的区别时,我发现了这个问题Interrupts and exceptions on SO...
那里的一些答案不合适(至少对于装配级别):
“例外是软件版本的中断” 但是存在软件中断!
“中断是异步的,但异常是同步的” 对吗?
“定期发生中断”
“中断是硬件实现的陷阱,异常是软件实现的” 同上!
我需要找出其中一些答案是否正确,如果有人能提供更好的答案,我将不胜感激......
谢谢!
中断通常是一种发出硬件状态变化信号的方法。外围设备将通过电信号连接到中断控制器,该中断控制器对每个可能的信号进行优先级分配并分配地址向量。中断控制器将检测到的中断条件转发给 CPU,CPU 可能会或可能不会“中断”其当前执行状态以处理信号状态更改(取决于是否启用中断和/或此特定输入是否不可屏蔽)。在某些架构上,除了硬件输入之外,中断条件还可能由软件启动(例如在 x86 上有一个 int 助记符)。
例外跨越更大范围的实施。在某些 CPU 架构(例如 68K)中,异常可能类似于中断,但由需要处理的某些 CPU 状态生成。例如有被零除、非法指令、I/O总线超时等情况会产生异常。通过处理这些异常,人们可以做一些事情,例如模拟指令并虚拟扩展指令集。
异常也可能是纯软件概念,例如在 C++ 语言中可以捕获和处理某些错误条件。
因此,一般而言,您尝试查找其有效性的陈述可能是真或假,具体取决于您应用它们的确切平台。
最常用的异常是编程语言中的一种控制流形式,用于处理程序正常逻辑流之外的事件,以避免程序的业务逻辑淹没在错误处理逻辑中。异常的“处理”是特定于上下文的。对于许多有用的用例,它更像是一种 GoTo。
中断是硬件辅助的“陷阱”,用于在某些事件发生时触发某些操作,例如计时器滴答声或程序“调用”INT21。注册了一个处理程序,它执行预定义的操作。
两者可能是同步的或异步的,也可能不是。