跳到主要内容

中断系统

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

中断和异常

  1. 内中断(异常):和当前执行的指令有关,来自主机内部。地址非法校验错误非法指令
    1. 陷入trap软中断:程序想要内核服务,主动将CPU控制权还给内核,系统调用通过陷入指令完成
    2. 故障fault缺页中断:错误条件引起,内核可修复,会返回控制权,故障处理后返回当前指令
    3. 终止abort:硬件致命错误引起,内核无法修复,不会返回控制权除数为零自行中断
  2. 外中断:外中断可以发生在用户态。中断的断点是下一条指令的地址,和异常的断点不同。
    1. 时钟中断:由时钟部件发来的中断信号,实现程序并发运行
    2. IO中断:由输入输出设备发来中断信号

需要说明的一点是, 时钟部件不一定是指CPU内部的不见,也可能是外部时钟. 另外关于内外中断的区别, 有争议.

指令中断和缺页中断的区别?
  1. 指令中断周期结束后执行下一条指令

  2. 缺页中断结束后访问当前页

中断系统的部件

名称说明
中断源发出中断请求的IO设备。
设备编码器(中断向量地址形成部件)IO设备一但响应了IO中断,就要暂停现行程序,转去执行该设备的中断服务程序。不同设备有不同的中断服务程序,每个服务程序都有一个入口地址,CPU必须找到这个入口地址。
中断服务程序每个中断源都有对应的处理程序。
中断向量中断服务程序的入口地址称为中断向量。
中断向量表所有中断向量构成一个表。
中断向量地址中断向量表每个表项所在的内存地址或表项的索引值,称为向量地址或中断类型号。每个中断都有唯一的类型号。
中断请求标记触发器INTR中断源向CPU提出中断请求INTR = 1中断源有请求。INTR可屏蔽中断,NMI不可屏蔽中断。
中断触发器EINTCPU响应中断条件开中断指令置1,关中断指令置0,屏蔽可屏蔽中断。
屏蔽字触发器MASK每个中断源一个MASK,1表示屏蔽该中断请求,所有触发器组成屏蔽字寄存器。

中断判优

硬件向量法软件实现(按优先级查询各中断源是否有中断请求,转向中断服务程序入口地址):CPU响应中断时,利用硬件产生向量地址,再由向量地址找到中断服务程序入口地址。

  1. CPU响应中断,只要将向量地址送至PC,执行这条指令,便可无条件地转向某服务程序的入口
  2. 向量地址表
响应优先级和处理优先级
  1. 响应优先级: 无屏蔽技术条件下,CPU理论上执行中断的顺序
  2. 处理优先级: 在屏蔽技术的加持下MASK,CPU实际执行中断的顺序

中断过程

中断隐指令不属于系统指令,它是CPU在中断周期内由硬件自动完成的一条指令。

  1. 中断源发出中断请求,INTR = 1
  2. 中断响应判优
  3. CPU响应中断:当EINT=1时,在指令执行周期结束后,查询中断。硬件引导中断服务程序。
    1. 关中断指令
    2. 保存断点
    3. 中断服务程序寻址:识别中断源获得中断类型号
  4. 中断程序
    1. 保存现场和MASK
    2. 开中断指令
    3. 执行中断服务程序
    4. 关中断指令
    5. 恢复现场和MASK
    6. 开中断指令
    7. 中断返回
中断程序执行过程中,新的中断请求?
  1. 不理,关中断
  2. 中断嵌套:提前设置开中断指令,新的优先级要高。
  3. 屏蔽技术
Loading Comments...