打断(interrupt)和例外(exception)的区别

中断和异常是两个不同的概念,但它们在某种意义上是相似的,它们都会导致CPU停止正常的指令执行流,以便在内核空间中执行另一个程序来处理它们。关键区别在于它们如何处理系统、处理器或程序本身中发生的意外事件。...

中断和异常是两个不同的概念,但它们在某种意义上是相似的,它们都会导致CPU停止正常的指令执行流,以便在内核空间中执行另一个程序来处理它们。关键区别在于它们如何处理系统、处理器或程序本身中发生的意外事件。

打断

中断是从连接到计算机的外部设备或系统内的程序发送到CPU的信号,需要操作系统干预正在进行的进程。中断,顾名思义,是使正常指令流停止执行的突发事件。它会提示操作系统立即对下一步要做的事情采取行动。这些意外事件通常与I/O设备有关,该设备主要处理外部世界。例如,当您按下键盘上的某个键或移动鼠标时,它会触发硬件中断,从而导致CPU读取按键或鼠标移动。因此,当中断发生时,CPU会运行一个特殊的“中断处理例程”或“中断处理程序”来处理导致中断的事件。一旦发生中断,控制权就会转移到操作系统,提示它立即采取行动。中断是按优先级排列的,这意味着具有高优先级的中断需要立即注意,必须首先处理。

例外

术语exception是exceptive event的缩写,是指存在于系统、处理器或需要CPU注意的程序中的意外事件。异常,如中断,中断了正常的指令流,但发生在程序执行过程中,是异常的,不能在程序内部处理。例如,如果您命令处理器将一个数字除以零,它将给出除零异常,从而导致计算机停止计算或显示错误消息。当异常发生时,CPU会中断正在进行的进程,并根据执行的类型,通过调用特定的异常处理函数来立即响应异常。异常通常可以分为处理器检测到的异常和编程异常。前者发生在CPU在执行指令时检测到任何类型的异常时,后者则是在程序员请求时生成的。

中断和异常之间的区别

定义

–中断,顾名思义,是一种意外事件,它使正常的指令流停止执行,从而改变处理器执行的指令序列。一旦发生中断,控制权就会转移到操作系统,提示它立即采取行动。另一方面,异常是指中断正常指令流但在程序执行过程中发生的异常事件,这些异常事件是异常的,无法在程序内部处理。有关异常的信息(包括其源和类型)存储在名为ExceptionObject的对象中。

来源

–当按下键盘上的键或移动鼠标时,它会触发硬件中断,提示CPU读取击键或鼠标移动的信息。软件中断可能由程序执行错误触发,通常称为异常。异常是在系统、处理器或需要CPU注意的程序中的某个地方生成的。例如,如果您命令处理器将一个数字除以零,它将给出除零异常,从而导致计算机停止计算或显示错误消息。

类型

–中断通常可分为同步中断和异步中断。每次CPU执行指令时都会触发同步中断,称为同步中断,因为CPU只有在终止指令执行后才会发出同步中断。当外部异常中断处理器时,就会发生异步中断。异常通常可以分为处理器检测到的异常和编程异常。前者发生在CPU在执行指令时检测到任何类型的异常时,后者则是在程序员请求时生成的。

处理

–中断是一类异常,异常主要分为四类:中断、故障、陷阱和中止。中断和异常都会使当前的指令执行流突然停止。中断是按优先级排列的,这意味着高优先级的中断需要立即注意并首先处理。当检测到中断或异常时,处理器执行中断处理程序或异常处理程序,同时暂停正在进行的进程。处理器在处理程序执行完成后立即恢复对中断进程的控制。

中断与异常:比较图

总结

中断和异常都是发生在系统、处理器或需要CPU立即注意的程序中的意外事件。两者都会使当前的指令执行流突然停止。当检测到中断或异常时,处理器执行中断处理程序或异常处理程序,同时暂停正在进行的进程。处理器在处理程序执行完成后立即恢复对中断进程的控制。如果存在多个中断,则应首先处理具有最高优先级的中断。这两种情况之间的一个关键区别是,中断由外部事件触发,而异常则由处理器内部触发。

  • 发表于 2021-06-26 18:05
  • 阅读 ( 401 )
  • 分类:IT

你可能感兴趣的文章

接受(accept)和除了(except)的区别

...《牛津英语词典》所说,except作为连词,是“在构成一个例外的语句之前使用”的。 我什么也没告诉他,只是说你不会来参加聚会。 接受(accept)和除了(except)的区别 •接受一词的意思是“同意”或“不说不就接受”。 •另一方...

  • 发布于 2020-11-04 22:05
  • 阅读 ( 238 )

选中的(checked)和未检查的异常(unchecked exception)的区别

...Unchecked异常是Java中存在的两种类型的异常。虽然这两个例外的功能是相同的,但它们也有各自的不同之处。checked异常和unchecked异常的主要区别在于前者由编译器检查,而后者则逃避编译器的注意。在编译时检查并处理的异常称...

  • 发布于 2021-06-25 08:14
  • 阅读 ( 413 )

轮询(polling)和打断(interrupt)的区别

...上的所有设备来查找发送该请求的设备。 什么是打断(interrupt)? 在程序执行过程中,微处理器可以通过特殊的IRQ线接收中断信号。中断通常是通过调用相应的系统子例程进行中断处理来执行的,这些子例程被称为BIOS或DOS中断...

  • 发布于 2021-06-25 09:09
  • 阅读 ( 575 )

接受(accept)和除了(except)的区别

接受和例外的主要区别在于接受意味着同意某事,而例外意味着将某事与另一事物分开或排除。因此,这两个词有两个不同的意思。 此外,accept是动词,except通常是介词,在非常正式的上下文中也充当动词。然而,由于拼写上...

  • 发布于 2021-06-30 16:38
  • 阅读 ( 215 )

陷阱(trap)和打断(interrupt)的区别

trap和interrupt之间的主要区别是,trap由用户程序触发,以调用OS功能,而中断由硬件设备触发,以允许处理器执行相应的中断处理程序例程。 操作系统是事件驱动的。在执行程序时,事件可能会突然发生。它将触发操作系统执行...

  • 发布于 2021-06-30 21:37
  • 阅读 ( 941 )

信号(signal)和打断(interrupt)的区别

...信号中,对发生的特定动作没有直接响应。 什么是打断(interrupt)? 中断是由CPU以外的组件在外部发生的事件。它通知CPU某种外部事件。诸如联网设备的IO设备可以发送中断来指示所接收的数据分组。此外,计时器可以向CPU通知超...

  • 发布于 2021-07-01 09:16
  • 阅读 ( 729 )

错误(error)和c中的异常#(exception in c#)的区别

...检查的异常。 Figure 1: C# program with an exception 上面是一个例外的程序。变量“a”的值为10,而“b”的值为0。将a除以b会出现异常。因此,catch块执行并打印异常。最后,执行finally块。 错误(error)和c中的异常#(exception in c#)的区别 定...

  • 发布于 2021-07-01 09:26
  • 阅读 ( 260 )

硬件(hardware)和软件中断(software interrupt)的区别

...中断,不可屏蔽中断,软件中断 什么是硬件中断(hardware interrupt)? 硬件设备产生硬件中断。硬盘可以产生一个硬件中断来通知它已经读取了一系列的数据块。网络设备可以创建一个硬件中断来指示它接收到了数据包。此外,输...

  • 发布于 2021-07-01 12:07
  • 阅读 ( 472 )

系统调用(system call)和打断(interrupt)的区别

...及请求访问硬件设备时,会发生系统调用。 什么是打断(interrupt)? 中断是通知CPU立即采取行动的事件。它是由CPU以外的组件引起的。最新的计算机会立即响应中断。此外,有两种类型的中断:硬件中断和软件中断。 硬件设备产...

  • 发布于 2021-07-01 18:24
  • 阅读 ( 514 )

打断(interrupt)和轮询(polling)的区别

...屏蔽中断,不可屏蔽中断,轮询,软件中断 什么是打断(interrupt)? 中断是指示CPU立即采取行动的事件。可以有一个中断来指示计时器超时。另外,中断可以通知联网设备的所接收的数据分组。当中断发生时,CPU暂停当前正在执...

  • 发布于 2021-07-01 22:30
  • 阅读 ( 1930 )
thcu0751
thcu0751

0 篇文章

相关推荐