(一)中断系统
1. 基本概念
在计算机执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向这些异常情况或特殊请求的处理;
处理结束后再返回到现行程序的间断处继续执行原程序,这个过程称为中断;
2. 分类
2.1. 按中断源位置
- 内中断:由程序引发(一般是出错)的中断,发生在 CPU 內部;
- 九大常见内中断:缺页、除 0,越界、存储保护、非法指令、特权指令、运行超时、等待超时、算术运算错误;
- 外中断:外部设备或接口引起的中断,一般分为三种;
- IO 中断:例如外设(键盘、鼠标等)输入;
- DMA 中断;
- 通道中断;
2.2. 按可否屏蔽
- 可屏蔽中断:CPU 可通过指令限制设备发出中断,或 CPU 可选择不响应中断;
- CPU 关中断:即 CPU 停止响应任何中断请求;
- 中断屏蔽字:用于区分中断优先级,让 CPU 先响应或只响应优先级高的;
- 不可屏蔽中断:CPU 无法限制也不能选择不响应的中断;
- 一般是物理上的不可抗力因素,例如电源断电,机械故障等;
3. 目标/问题
3.1. 中断请求标记

- 中断请求标记触发器 INTR:每种类型的中断请求都有 1 位的触发器,用于标记是否请求中断;
- 多个 INTR 组成一个寄存器,称为中断请求标记寄存器;
- 各位 INTR 分散在各个中断源的接口电路中;
- 各位 INTR 集中到 CPU 中断系统内的寄存器;
3.2. 中断排队逻辑
- 硬件排队器:通过硬件逻辑门电路,实现对每个 INTR 优先级的区分;
- 特点:速度快,但是固化,修改起来困难;
- 软件:通过微程序查询和判断各请求的优先级与处理顺序;
- 特点:速度较慢,但灵活,易修改;
3.3. 中断响应条件
- 中断允许触发器:与每位 INTR 对应的触发器,表示当前 CPU 是否响应该请求;
- CPU 收到中断请求后,查看对应的允许触发器:
- 若为 1,则执行完当前指令后响应中断;
- 若为 0,则不响应此中断;
- 中断隐指令:指 CPU 收到中断请求时,硬件层面自动执行的一系列指令,按顺序包括
- 1)关中断:保证当前中断不会被影响;
- 2)保存断点,方便处理完之后返回。包括保存 PC 值,断点压栈,保存寄存器值等;
- 3)中断服务程序寻址:计算中断服务程序的地址,放到 PC 中;
- 中断服务程序:为处理当前中断而要执行的一系列操作;
3.4. 中断服务程序寻址
- 中断向量法:也称硬件向量法,分为中断向量 + 中断向量表;
- 中断向量:即中断服务程序的入口地址;
- 中断向量表:存放一系列中断向量的表,表项可包含中断类型和中断向量;
- 软件查询法:即用程序查询中断入口地址;
3.5. 中断服务程序
- 保护现场,包括
- 保存程序断点 PC,由隐指令完成;
- 保存寄存器内容:一般由中断服务程序完成;
- 执行中断服务程序;
- 可能会触发其他中断,执行其他服务程序;
- 恢复现场,一般是中断服务程序完成;
- 开中断,即重新允许响应中断请求;
- 中断返回;
3.6. 多重中断
- 概念:处理中断时,又发生了其他中断,使得 CPU 从当前中断退出,转而执行其他中断;
- 前提条件
- 提前开中断;
- 规定:优先级高的中断可以干扰优先级较低的;
- 中断屏蔽字:每种中断都对应一个屏蔽字,字长和总中断类型数相同。设
表示第 号中断屏蔽字第 位; ,表示 号中断可以屏蔽 号; ,表示不能屏蔽;
- 区分:响应优先级和处理优先级
- 响应优先级:决定中断 A 和 B 同时到达时,CPU 先处理哪个;
- 处理优先级:决定中断 A 已在处理时,若收到 B 的请求,是否转而处理 B;
- 处理优先级主要用于多重中断。要生效,CPU 要先开中断;