中断和异常的区别


尽管中断和异常是两个不同的概念,但它们之间存在关联,因为它们都迫使中央处理单元 (CPU) 停止指令的正常执行流程,转而开始执行内核空间中的另一个程序以处理当前问题。即使中断和异常是不同的概念,这一点也是正确的。主要区别在于它们处理系统、处理器或甚至程序本身中可能发生的不可预测事件的方式。

什么是中断?

中断是由连接到计算机的外部设备或系统本身正在运行的程序向计算机的中央处理单元 (CPU) 发送的一个信号,该信号要求操作系统干预当前进程。

顾名思义,中断是突然发生的事件,会使系统正在执行的指令的连续流程停止。它指示操作系统立即采取以下步骤。这些不可预测的事件通常与 I/O 设备相关联,I/O 设备主要负责与外部世界通信。例如,当您按下键盘上的某个键或移动鼠标时,就会产生硬件中断。

这些中断会导致中央处理单元 (CPU) 读取按键或鼠标移动。当发生中断时,中央处理单元 (CPU) 会执行一个称为“中断处理例程”或“中断处理程序”的功能来处理最初触发中断的情况。

一旦检测到中断,控制权就会转移到操作系统,这会提示操作系统开始采取快速行动。中断是按优先级排序的,这意味着优先级高的中断需要快速处理,并且必须在优先级低的中断之前处理。

异常有 4 种不同的类别:**中断、故障、中止**和**陷阱**。尽管中断是一种异常,但两者之间存在一些关键区别。

  • **陷阱** - 通常,它是一种同步中断,每当发生异常情况(例如,断点、除以零、无效内存访问)时就会触发。

  • **故障** - 客户端应用程序将使用故障异常来捕获 SOAP 中已在合同中指定的故障。您无法根据标准异常消息确定错误的原因;因此,故障异常非常有用。

  • **中止** - 每当指令执行获取结果导致错误时,就会抛出此类异常的实例。

什么是异常?

“异常”一词是“异常事件”的缩写,它描述了可能在系统、处理器或程序中的任何地方发生的意外事件,并需要中央处理单元 (CPU) 的注意。与中断类似,异常会使程序执行期间指令的正常流程发生偏离。

但是,与中断不同,异常发生在程序执行期间,并且非常特殊,程序本身无法处理。例如,如果您向处理器发出将数字除以零的命令,它将发出除以零异常,这会导致计算机停止操作或显示错误通知。

当发生错误时,中央处理单元 (CPU) 会停止当前正在执行的进程,并立即通过调用特定的异常处理程序函数对错误做出反应,该函数根据执行的类型而有所不同。

一般来说,异常可以分为两类:处理器注意到的异常和程序创建的异常。第一类异常是在中央处理单元 (CPU) 在执行指令时发现任何不规则情况时引发的,而第二类异常是在程序员特别请求时引发的。

中断和异常的区别

“中断”一词是指属于“异常”总称的一类。其他异常类包括“故障”、“陷阱”和“中止”。中断和异常都会突然停止正在执行的指令的执行。异常和中断具有相同的效果。

中断是按优先级排序的,这意味着优先级最高的中断(需要立即处理)首先得到处理。每当 CPU 遇到中断或异常时,它都会执行中断处理程序或异常处理程序,并且它会在暂停当前正在运行的进程时执行此操作。一旦处理程序执行完成,处理器就会立即恢复暂停的进程的控制权。

下表重点介绍了中断和异常之间的主要区别 -

比较依据
中断
异常
同义词
被称为硬件中断。
被称为软件中断。
操作
在大多数情况下,一个硬件中断的发生会使所有其他硬件中断的操作失效。
就异常而言,这不是一个有效的情况。
服务
这些是异步外部服务请求(例如键盘或打印机需要服务)。
这些是由异常事件触发的同步内部服务请求(想想非法指令、非法地址、溢出等)。
程序
中断可能发生在程序的任何点,因为它是非同步的。
由于异常是同步的,因此当程序中发生异常事件时(例如除以零或非法内存位置)就会发生。
事件
这些是正常事件,不应干扰计算机的正常运行。
这些是不寻常的事件,通常会导致程序终止。
来源
当按下键盘上的某个键或移动鼠标时,会产生硬件中断。这些中断指示 CPU 读取检测到的按键或鼠标移动。程序执行期间发生的错误可能会导致软件中断,通常称为异常。
异常可能发生在系统、处理器或程序中的任何地方,并且每个异常都需要中央处理单元 (CPU) 的注意。例如,如果您向处理器发出将数字除以零的命令,它将发出除以零异常,这会导致计算机停止操作或显示错误通知。

结论

中断和异常都是可能发生在系统、处理器或程序中的任何地方的意外事件,并且需要中央处理单元 (CPU) 的立即注意。这两者都会立即停止正在执行的指令的正在进行的流程。

每当 CPU 遇到中断或异常时,它都会执行中断处理程序或异常处理程序,并且它会在暂停当前正在运行的进程时执行此操作。一旦处理程序执行完成,处理器就会立即恢复暂停的进程的控制权。

如果有多个中断,则应首先处理优先级最高的中断。异常是从处理器内部生成的,而中断是由外部事件引起的,这是这两个情况之间最显着的区别之一。

更新于: 2022 年 7 月 5 日

6K+ 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告