计算机中断与异常总结
概述
中断和异常是一些提示性事件,这些事件表明系统、处理器或者当前执行程序或任务存在着某种状况,需要处理器注意。
典型情况下,中断是在程序执行期间随机发生的,是对硬件信号的响应。系统硬件使用中断去处理处理器的外部事件,比如服务外设的请求。使用INT n指令,软件也可以产生中断(模拟)。
异常是在处理器执行指令的过程中发现错误状况而产生的,比如除数为零。处理器可以检测出多种不同的错误状况,包括保护违例、页故障、内部机器故障。
中断向量
为了便于处理中断和异常,会给每一个中断状况都分配了一个唯一的识别码,称作向量。处理器用分配给每个异常或者中断的向量作为访问中断描述符表的索引,以确定异常或者中断处理程序的入口。
中断源
- 外部(硬件产生的)中断
- 软件产生的中断
外部中断
外部中断是通过处理器的引脚或者本地的APIC接收的。
可屏蔽中断
凡是通过INTR引脚或本地 APIC传递到处理器的外部中断都被称作可屏蔽硬件中断。
使用EFLAGS寄存器的IF标志可以一下子屏蔽全部可屏蔽硬件中断。
软件产生的中断
将中断向量号作为INT指令的操作数即可通过INT指令在软件中产生中断。比如,指令INT 35即可强制显式地调用第35号中断处理例程。
异常源
- 处理器探测到的程序错误异常。
- 软件产生的异常。
- 机器检测异常。
程序错误异常
在应用程序、操作系统或管理程序的执行过程中,当探测到程序错误时,处理器产生一个或多个异常。这些异常又进一步被划分为故障、陷阱和终止。
软件产生的异常
INT n指令可以在软件中用来模拟某个异常,
机器检测异常
处理器提供了内部和外部的机器检测机制,用来检查内部芯片硬件和总线事务的操作。这些机制构成了扩展的异常机制。当探测到一个机器检测错误时,处理器发出机器检测异常信号,并返回一个错误码。
异常分类
根据报告的方式和引起异常的指令能否在不失程序或者任务连续性的情况下重新执行,异常被分为故障、陷阱和终止三种。
- 故障故障是一种通常能够