📜  中断与异常之间的区别

📅  最后修改于: 2021-06-28 09:06:12             🧑  作者: Mango

前提条件–中断和异常
中断是异常的类别之一。异常分为4类:中断,陷阱,故障和中止。尽管中断属于异常,但它们之间仍然有许多差异。

在任何计算机中,在正常执行程序的过程中,都有可能导致CPU暂时停止运行的事件。这样的事件称为中断。中断可能是由软件或硬件故障引起的。硬件中断称为“中断”,而软件中断称为“异常”。引发中断后,控制权将转移到称为中断服务程序(ISR)的特殊子程序,该子程序可以处理由中断引发的条件。

什么是陷阱,故障和中止?

  1. 陷阱 –
    它通常是由异常情况(例如,断点,被零除,无效的内存访问)引起的一种同步中断。
  2. 过错 –
    错误异常用于客户端应用程序中,以捕获合同规定的SOAP错误。通过简单的异常消息,您无法确定异常的原因,这就是“故障异常”很有用的原因。
  3. 中止–
    这是一种异常类型,发生在指令提取导致错误时。

什么是中断?
术语“中断”通常保留给硬件中断。它们是由外部硬件事件引起的程序控制中断。在此,外部是指CPU外部。硬件中断通常来自许多不同的来源,例如计时器芯片,外围设备(键盘,鼠标等),I / O端口(串行,并行等),磁盘驱动器,CMOS时钟,扩展卡(声卡,视频)卡等)。这意味着由于某些与正在执行的程序有关的事件,几乎不会发生硬件中断。

例子 –
用户按下键盘上的按键之类的事件,或者内部硬件计时器超时等事件都可能引发这种中断,并可以通知CPU某些设备需要注意。在这种情况下,CPU将停止正在执行的任何操作(即暂停当前程序),提供设备所需的服务,并返回到正常程序。当发生硬件中断并且CPU启动ISR时,将禁用其他硬件中断(例如,在80×86机器中)。如果您需要在ISR运行时发生其他硬件中断,则需要通过清除中断标志(使用sti指令)来明确地执行此操作。在80×86的计算机中,清除中断标志只会影响硬件中断。

什么是例外?
例外是软件中断,可以将其识别为特殊的处理程序例程。可以将异常标识为自动发生的陷阱。通常,没有与异常关联的特定指令(使用特定指令生成陷阱)。因此,由于在程序执行期间发生“例外”情况而发生异常。

例子 –
除以零,执行非法的操作码或内存相关的错误可能会导致异常。每当引发异常时,CPU都会临时挂起它正在执行的程序并启动ISR。 ISR将包含该异常的处理方法。它可以纠正问题,或者如果不可能,则可以通过打印适当的错误消息来中止程序。尽管特定的指令不会引起异常,但是异常总是会由一条指令引起。例如,零除错误只能在执行除法指令期间发生。

中断和异常之间的区别:

Interrupt Exception
These are Hardware interrupts. These are Software Interrupts.
Occurrences of hardware interrupts usually disable other hardware interrupts. This is not a true case in terms of Exception.
These are asynchronous external requests for service (like keyboard or printer needs service). These are synchronous internal requests for service based upon abnormal events (think of illegal instructions, illegal address, overflow etc).
Being asynchronous, interrupts can occur at any place in the program. Being synchronous, exceptions occur when there is abnormal event in your program like, divide by zero or illegal memory location.
These are normal events and shouldn’t interfere with the normal running of a computer. These are abnormal events and often result in the termination of a program