中断与异常
在任何计算机中,在其正常执行程序期间,可能会有一些事件会导致CPU暂时停止。这样的事件称为中断。中断可能是由软件或硬件故障引起的。硬件中断称为(简单地)中断,而软件中断称为异常。一旦增加了中断(软件或硬件),将控件转移到一个特殊的子例程中,称为ISR(中断服务例程),该子例子可以处理中断的条件。
什么是中断?
该术语中断通常用于硬件中断。它们是由外部硬件事件引起的程序控制中断。在这里,外部表示CPU的外部。硬件中断通常来自许多不同的来源,例如计时器芯片,外围设备(键盘,鼠标等),I/O端口(串行,并行等),磁盘驱动器,CMOS驱动器,CMOS时钟,扩展卡(声卡,视频,视频,视频卡等)。这意味着由于某些与执行程序相关的事件,几乎永远不会发生硬件中断。例如,用户在键盘上按键或内部硬件计时器的时机之类的事件可能会引起这种中断,并可以通知CPU某些设备需要一些注意。在这样的情况下,CPU将停止其所做的事情(即暂停当前程序),提供设备所需的服务,并将返回正常程序。当发生硬件中断并且CPU启动ISR时,其他硬件中断将被禁用(例如,在80×86机器中)。如果您需要在ISR运行时发生其他硬件中断,则需要通过清除中断标志(使用STI指令)明确执行此操作。 In 80×86 machines, clearing the interrupt flag will only affect hardware interrupts.
什么是例外?
例外是软件中断,可以将其识别为特殊的处理程序例程。异常可以识别为自动发生的陷阱(可以将陷阱识别为控制器的转移,该控制器由程序员启动)。通常,没有与异常相关的特定说明(使用特定指令生成陷阱)。因此,由于程序执行过程中发生的“特殊”条件,发生了例外。例如,除以零,执行非法OPCODE或与内存相关的故障可能会导致例外。每当提出异常时,CPU都会暂时暂停其执行并启动ISR的程序。ISR将包含与例外情况的关系。它可能会纠正问题,或者如果不可能,可以通过打印合适的错误消息来优雅地中止程序。尽管特定的指令不会导致例外,但例外将始终由指令引起。例如,只有在执行分区指令执行期间才会发生零错误的划分。
中断和异常有什么区别?
中断是硬件中断,而例外是软件中断。硬件中断的出现通常禁用其他硬件中断,但对于例外情况并非如此。如果您需要禁止硬件中断,直到提供例外,则需要明确清除中断标志。通常,计算机上的中断标志会影响(硬件)中断,而不是例外。这意味着清除此标志不会阻止例外。
发表评论