中断,异常,陷阱

原创 2011年01月17日 14:39:00

 

8086/8088把中断分为内部中断和外部中断两大类。80386把外部中断称为中断,把内部中断称为异常。与8086/8088一样,80386通常在两条指令之间响应中断或异常。80386最多处理256种中断或异常。

 

中断是由异步的外部事件引起的。外部事件及中断响应与正执行的指令没有关系80386有两根引脚INTRNMI接受外部中断请求信号。 INTR接受可屏蔽中断请求。NMI接受不可屏蔽中断请求。在80386中,标志寄存器EFLAGS中的IF标志决定是否屏蔽可屏蔽中断请求。

 

外部硬件在通过INTR发出中断请求信号的同时,还要向处理器给出一个8位的中断向量。处理器在响应可屏蔽中断请求时,读取这个由外部硬件给出的中断向量号。处理器对这个中断向量号并没有规定。但在具体的微机系统中,系统必须通过软件和硬件的配合设置,使得给出的这个中断向量号不仅与外部中断源对应,而且要避免中断向量号使用冲突情况的出现。可编程中断控制器芯片8259A可配合80386工作,能够根据设置向处理器提供上述中断向量号,还能处理中断请求的优先级。每个8259A芯片可以支持8路中断请求信号,如果使用98259A芯片(一个主片,8个从片),就可使80386在单个引脚INTR上接受多达64个中断源的中断请求信号。

处理器不屏蔽来自NMI的中断请求。处理器在响应NMI中断时,不从外部硬件接收中断向量号。与8086/8088一样,在80386中,不可屏蔽中断所对应的中断向量号固定为2。为了不可屏蔽中断的嵌套,每当接受一个NMI中断,处理器就在内部屏蔽了再次响应NMI,这一屏蔽过程直到执行中断返回指令IRET后才结束。所以,NMI处理程序应以IRET指令结束。

 

 

异常是80386在执行指令期间检测到不正常的或非法的条件所引起的。异常与正执行的指令有直接的联系当发生这些情况时,指令就不能成功完成。软中断指令“INT n”“INTO”也归类于异常而不称为中断,这是因为执行这些指令产生异常事件。

80386识别多种不同类别的异常,并赋予每一种类别以不同的中断向量号。异常发生后,处理器就象响应中断那样处理异常。即根据中断向量号,转相应的中断处理程序。把这种中断处理程序称为异常处理程序可能更合适。

根据引起异常的程序是否可被恢复和恢复点不同,把异常进一步分类为故障(Fault)、陷阱(Trap)和中止(Abort)。我们把对应的异常处理程序分别称为故障处理程序、陷阱处理程序和中止处理程序。


故障是在引起异常的指令之前,把异常情况通知给系统的一种异常。80386认为故障是可排除的。当控制转移到故障处理程序时,所保存的断点CSEIP的值指向引起故障的指令。这样,在故障处理程序把故障排除后,执行IRET返回到引起故障的程序继续执行时,刚才引起故障的指令可重新得到执行。这种重新执行,不需要操作系统软件的额外参与。故障的发现可能在指令开始执行之前,也可能在指令执行期间。如果在指令执行期间检测到故障,那么中止故障指令,并把指令的操作数恢复为指令开始执行之前的值。这可保证故障指令的重新执行得到正确的结果。例如,在一条指令的执行期间,如果发现段不存在,那么停止该指令的执行,并通知系统产生段故障,对应的段故障处理程序可通过加载该段的方法来排除故障,之后,原指令就可成功执行,至少不再发生段不存在的故障。


陷阱是在引起异常的指令之后,把异常情况通知给系统的一种异常。当控制转移到异常处理程序时,所保存的断点CSEIP的值指向引起陷阱的指令的下一条要执行的指令。下一条要执行的指令,不一定就是下一条指令。因此,陷阱处理程序并不是总能根据保存的断点,反推确定出产生异常的指令。在转入陷阱处理程序时,引起陷阱的指令应正常完成,它有可能改变了寄存器或存储单元。软中断指令、单步异常是陷阱的例子。

 

TRAPCPU的内部事件,是由于系统调用引起处理机中断的指令。

在系统调用中,TRAP负责由用户模式转换为内核模式,并将返回地址保存至堆栈中以备后用。

 

陷入是由程序造成的,并且与程序同步。如果程序一而再的被运行,陷阱将总在指令流中相同位置的精确发生。

而中断则是由外部事件和其时钟造成的,不具有重复性..


中断类型码:用于区分不同的中断源,即系统中每个中断源都应该对应一个唯一的类型码。8086系统中的中断类型码以8位无符号数(00H~0FFH)表示,一共可以区分256个不同的中断源。

 

 

 

中断向量:中断服务程序(ISR)的入口地址,也就是ISR的第一条指令在存储器中的位置。8086系统中的中断向量由两个字(4个字节)组成,低位字表示入口的偏移地址,高位字表示入口的段基址。显然,每个中断类型码对应一个中断向量,则8086系统中共应有256个中断向量。

 

 

 

中断向量表:中断向量的存放地。8086系统将最低的1KB(00000H~003FFH) RAM空间用于存放这256个中断向量。

 

 

 

三者之间的关系是:利用中断类型码n可以很容易地从中断向量表中找到该中断源所对应的中断向量,即:中断向量存放的起始地址m =n×4,从中断向量表的m地址单元开始连续取出的四个字节就是n号中断的ISR入口地址。8086CPU正是用这种方法完成中断索引的。

 

中断向量是固定不变吗?那同一种中断也有多种处理要求,怎么办?

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

中断和陷阱的区别(转载)

外部中断,就是我们通常所说的中断(interrupt)。对于执行的系统来说,这种中断发生完全是"异步"的,根本无法预测到此类中断会在什么时候发生。因此,CPU(或者软件)对于此类外部中断完全是"被动"...

操作系统的中断与异常(陷阱)

刚开始学习操作系统原理,转载一下关于中断(interrupt)和陷阱(trap)的内容。 1.中断的基本概念  中断是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂...

中断和异常,陷阱的区别和联系

对于中断,异常和陷阱的各种关系,总结如下: 表 2.1. 中断,异常和陷阱的区别和联系   对CPU来说是 和当前CPU所执行的指令的关系 CPU接下来的事情 ...

java 异常捕获和捕获中的一些陷阱

java异常的捕获,

【Java 陷阱】SimpleDateFormat 时间格式化多线程异常

SimpleDateFormat 陷阱

《高效编程十八式》(6/13)命名、陷阱与异常

命名、陷阱与异常 王伟冰 命名     命名其实包括两方面的内容,一个是起什么样的名字,一个是在什么地方定义。通常我们认为,一个变量、函数或类的名字应该能够清晰地表达出它的作用,但是有时候要想出...

深入解析Java异常中的陷阱

Java的异常中的陷阱

java异常捕捉陷阱(内存泄漏,finally块,catch块,继承得到的异常)

1.    异常捕捉的陷阱 异常处理机制是java语言的特色之一,尤其是java语言的Checked异常,更是体现了java语言的严谨性:没有完善错误处理的代码根本不会被执行。对于Checked...

中断 陷阱 软中断

中断即外中断,指来自处理机和内存外部的中断,包括 I/O 设备发出的 I/O中断、外部信号中断、各种定时器引起的时钟中断以及调试程序中设置的断点等引起的调试中断等。 陷阱即内中断,主要指在处理机...

中断、陷阱、软中断之间的异同

中断即外中断,指来自处理机和内存外部的中断,包括 I/O 设备发出的 I/O中断、外部信号中断、各种定时器引起的时钟中断以及调试程序中设置的断点等引起的调试中断等。 陷阱即内中断,主...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)