前提条件–中断和异常
中断是异常的类别之一。异常分为4类:中断,陷阱,故障和中止。尽管中断属于异常,但它们之间仍然有许多差异。
在任何计算机中,在正常执行程序的过程中,都有可能导致CPU暂时停止运行的事件。这样的事件称为中断。中断可能是由软件或硬件故障引起的。硬件中断称为“中断”,而软件中断称为“异常”。引发中断后,控制权将转移到称为中断服务程序(ISR)的特殊子程序,该子程序可以处理由中断引发的条件。
什么是陷阱,故障和中止?
- 陷阱 –
它通常是由异常情况(例如,断点,被零除,无效的内存访问)引起的一种同步中断。 - 过错 –
错误异常用于客户端应用程序中,以捕获合同规定的SOAP错误。通过简单的异常消息,您无法确定异常的原因,这就是“故障异常”很有用的原因。 - 中止–
这是一种异常类型,发生在指令提取导致错误时。
什么是中断?
术语“中断”通常保留给硬件中断。它们是由外部硬件事件引起的程序控制中断。在此,外部是指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 |