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

在任何一台计算机中,在程序正常执行期间,都有可能发生导致CPU暂时停止的事件。像这样的事件叫做中断。中断可能由软件或硬件故障引起。硬件中断称为(简单地)中断,而软件中断称为异常。一旦中断(软件或硬件)被触发,控制权就被转移到一个称为ISR(中断服务程序)的特殊子程序上,该子程序可以处理由中断引起的条件。...

中断与异常

在任何一台计算机中,在程序正常执行期间,都有可能发生导致CPU暂时停止的事件。像这样的事件叫做中断。中断可能由软件或硬件故障引起。硬件中断称为(简单地)中断,而软件中断称为异常。一旦中断(软件或硬件)被触发,控制权就被转移到一个称为ISR(中断服务程序)的特殊子程序上,该子程序可以处理由中断引起的条件。

什么是中断?

术语中断通常是为硬件中断保留的。它们是由外部硬件事件引起的程序控制中断。这里,external是指CPU之外的。硬件中断通常来自许多不同的来源,如定时器芯片、外围设备(键盘、鼠标等)、I/O端口(串行、并行等)、磁盘驱动器、CMOS时钟、扩展卡(声卡、视频卡等)。与硬件相关的事件几乎永远不会发生。例如,用户在键盘上按键或内部硬件计时器超时等事件都会引发这种中断,并通知CPU某个设备需要注意。在这样的情况下,CPU将停止它正在做的事情(即暂停当前程序),提供设备所需的服务,并返回正常程序。当发生硬件中断且CPU启动ISR时,其他硬件中断被禁用(例如在80×86机器中)。如果需要在ISR运行时发生其他硬件中断,则需要通过清除中断标志(使用sti指令)来显式地执行此操作。在80×86机器中,清除中断标志只会影响硬件中断。

什么是例外?

异常是一个软件中断,它可以被标识为一个特殊的处理程序例程。异常可以标识为自动发生的陷阱(陷阱可以标识为控制权的转移,由程序员启动)。通常,没有与异常相关联的特定指令(陷阱是使用特定指令生成的)。因此,异常是由于程序执行期间发生的“异常”条件而发生的。例如,除零、执行非法操作码或内存相关错误都可能导致异常。每当发生异常时,CPU会暂时挂起正在执行的程序并启动ISR。ISR将包含如何处理异常。它可以纠正问题,或者如果不可能,它可以通过打印适当的错误消息优雅地中止程序。虽然特定指令不会导致异常,但异常总是由指令引起的。例如,除法零错误只能在除法指令执行期间发生。

中断和异常有什么区别?

  • 发表于 2020-10-16 07:06
  • 阅读 ( 196 )
  • 分类:IT

你可能感兴趣的文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

错误(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
  • 阅读 ( 249 )

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

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

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

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

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

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

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

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

  • 发布于 2021-07-01 22:30
  • 阅读 ( 1915 )
emkmu8595
emkmu8595

0 篇文章

相关推荐