| 异常(内中断) | 中断(外中断) |
基本概念 | - 由CPU执行指令内部产生的事件
- 内中断都是不可屏蔽中断,一旦出现,就要立即处理。
| - 由来自CPU外部的设备发出的中断请求(常用于输入输出)
- 典型的由外部设备触发的、与当前正在执行的指令无关的异步事件
- 外部I/O设备通过特定的中断请求信号线向CPU提出中断请求
- CPU每执行完一条指令就检查中断请求信号线,若检测到中断请求,则进入中断响应期
- 外部中断都是在一条指令执行完成后(中断周期)才被检测并处理的
|
分类 | 故障 | - 由指令执行引起的异常
- 在引起故障的指令启动之后、执行结束前被检测到的异常事件
| 自陷 | - 也称陷阱或陷入,是预先安排的一种“异常事件”,就像预先设置好的“陷阱”一样
| 终止 | - 若在执行指令的过程中发生了使计算机无法继续执行的硬件故障,那么程序将无法继续执行,只能终止
| | 可屏蔽中断(INTR) | - 通过可屏蔽中断请求线INTR向CPU发出的中断请求
- 通过改变屏蔽字可以实现多重中断
| 不可屏蔽中断(NMI) | - 通过不可屏蔽中断请求线NMI向CPU发出的中断请求
- 通常是非常紧急的硬件故障,如电源掉电等。
- 不受中断标志位的影响,即使在关中断的情况下也会被响应
| |
举例 | 故障 | - 指令译码时,出现“非法操作码”
- 取数据时,发生“缺段”或“缺页”
- 除数为零
- 地址越界
- 运算溢出
| 自陷 | - x86机器中,用于程序调试“断点设置”和单步跟踪功能
- 系统调用指令
- 条件自陷指令
| 终止 | | - 终止异常(Abort)和外中断属于硬件中断
- 故障异常和自陷异常属于软件中断
| - I/O中断:键盘输入,打印机缺纸
- 时钟中断:一个固定的时间片已经到了,让处理机处理计时、启动定时运行的任务
|
执行时间 | | - 每个指令周期末尾,CPU都会检查是否有外中断信号需要处理
|
不同点 | - 缺页”或“溢出”等异常事件是由特定指令在执行过程中产生的
- 异常的检测由CPU自身完成,不必通过外部的某个信号通知CPU
| |