中断系统
让操作系统夺回CPU使用权的唯一途径,没有中断就没有并发,没有操作系统,中断处理程序一定是内核程序,不可屏蔽中断和内部异常在关中断模式下也会被响应。机制:中断处理程序一定是内核程序
中断和异常

- 内中断(异常):和当前执行的指令有关,来自主机内部。地址非法校验错误非法指令
- 陷入
trap软中断:程序想要内核服务,主动将CPU控制权还给内核,系统调用通过陷入指令完成 - 故障
fault缺页中断:错误条件引起,内核可修复,会返回控制权,故障处理后返回当前指令 - 终止
abort:硬件致命错误引起,内核无法修复,不会返回控制权除数为零自行中断
- 陷入
- 外中断:外中断可以发生在用户态。中断的断点是下一条指令的地址,和异常的断点不同。
- 时钟中断:由时钟部件发来的中断信号,实现程序并发运行
- IO中断:由输入输出设备发来中断信号
需要说明的一点是, 时钟部件不一定是指CPU内部的不见,也可能是外部时钟. 另外关于内外中断的区别, 有争议.
- 缺页中断结束后访问当前页
中断系统的部件
| 名称 | 说明 |
|---|---|
| 中断源 | 发出中断请求的IO设备。 |
| 设备编码器(中断向量地址形成部件) | IO设备一但响应了IO中断,就要暂停现行程序,转去执行该设备的中断服务程序。不同设备有不同的中断服务程序,每个服务程序都有一个入口地址,CPU必须找到这个入口地址。 |
| 中断服务程序 | 每个中断源都有对应的处理程序。 |
| 中断向量 | 中断服务程序的入口地址称为中断向量。 |
| 中断向量表 | 所有中断向量构成一个表。 |
| 中断向量地址 | 中断向量表每个表项所在的内存地址或表项的索引值,称为向量地址或中断类型号。每个中断都有唯一的类型号。 |
中断请求标记触发器INTR中断源向CPU提出中断请求 |
INTR = 1中断源有请求。INTR可屏蔽中断,NMI不可屏蔽中断。 |
中断触发器EINTCPU响应中断条件 |
开中断指令置1,关中断指令置0,屏蔽可屏蔽中断。 |
屏蔽字触发器MASK |
每个中断源一个MASK,1表示屏蔽该中断请求,所有触发器组成屏蔽字寄存器。 |
中断判优
硬件向量法软件实现(按优先级查询各中断源是否有中断请求,转向中断服务程序入口地址):CPU响应中断时,利用硬件产生向量地址,再由向量地址找到中断服务程序入口地址。
- CPU响应中断,只要将向量地址送至PC,执行这条指令,便可无条件地转向某服务程序的入口
- 向量地址表
中断过程
中断隐指令不属于系统指令,它是CPU在中断周期内由硬件自动完成的一条指令。
- 中断源发出中断请求,
INTR = 1 - 中断响应判优
- CPU响应中断:当
EINT=1时,在指令执行周期结束后,查询中断。硬件引导中断服务程序。- 关中断指令
- 保存断点
- 中断服务程序寻址:识别中断源获得中断类型号
- 中断程序
- 保存现场和
MASK - 开中断指令
- 执行中断服务程序
- 关中断指令
- 恢复现场和
MASK - 开中断指令
- 中断返回
- 保存现场和