Skip to content

(一)中断系统

1. 基本概念

在计算机执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向这些异常情况或特殊请求的处理;

处理结束后再返回到现行程序的间断处继续执行原程序,这个过程称为中断;

2. 分类

2.1. 按中断源位置

  • 内中断:由程序引发(一般是出错)的中断,发生在 CPU 內部;
    • 九大常见内中断:缺页、除 0,越界、存储保护、非法指令、特权指令、运行超时、等待超时、算术运算错误;
  • 外中断:外部设备或接口引起的中断,一般分为三种;
    • IO 中断:例如外设(键盘、鼠标等)输入;
    • DMA 中断;
    • 通道中断;

2.2. 按可否屏蔽

  • 可屏蔽中断:CPU 可通过指令限制设备发出中断,或 CPU 可选择不响应中断;
    • CPU 关中断:即 CPU 停止响应任何中断请求;
    • 中断屏蔽字:用于区分中断优先级,让 CPU 先响应或只响应优先级高的;
  • 不可屏蔽中断:CPU 无法限制也不能选择不响应的中断;
    • 一般是物理上的不可抗力因素,例如电源断电,机械故障等;

3. 目标/问题

3.1. 中断请求标记

image-20250329230643412

  • 中断请求标记触发器 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. 中断服务程序

  1. 保护现场,包括
    • 保存程序断点 PC,由隐指令完成;
    • 保存寄存器内容:一般由中断服务程序完成;
  2. 执行中断服务程序;
  3. 可能会触发其他中断,执行其他服务程序;
  4. 恢复现场,一般是中断服务程序完成;
  5. 开中断,即重新允许响应中断请求;
  6. 中断返回;

3.6. 多重中断

  • 概念:处理中断时,又发生了其他中断,使得 CPU 从当前中断退出,转而执行其他中断;
  • 前提条件
    • 提前开中断
    • 规定:优先级高的中断可以干扰优先级较低的;
  • 中断屏蔽字:每种中断都对应一个屏蔽字,字长和总中断类型数相同。设 m[i][j] 表示第 i 号中断屏蔽字第 j 位;
    • m[i][j]=1,表示 i 号中断可以屏蔽 j 号;
    • m[i][j]=0,表示不能屏蔽;
  • 区分:响应优先级和处理优先级
    • 响应优先级:决定中断 A 和 B 同时到达时,CPU 先处理哪个
    • 处理优先级:决定中断 A 已在处理时,若收到 B 的请求,是否转而处理 B;
    • 处理优先级主要用于多重中断。要生效,CPU 要先开中断