Appearance
408 > ### 计算机组成原理 > #### 中断方式
一、定位信息
| 项目 | 内容 |
|---|---|
| 知识单元编号 | CO-06-06 |
| 所属章节 | 第六章 总线与I/O系统 |
| 核心主题 | 中断方式的工作原理、中断系统与中断处理流程 |
| 考试权重 | ★★★★(高频重点,选择+大题均可出) |
| 前置知识 | CO-06-04 I/O接口、CO-06-05 程序查询方式 |
| 后续衔接 | CO-06-07 DMA方式 |
二、知识点讲解
2.1 中断方式的基本概念
中断(Interrupt) 是指CPU在执行程序过程中,遇到急需处理的事件时,暂时中止当前程序的执行,转去处理该事件(中断服务),处理完毕后返回原程序继续执行的过程。
中断I/O方式 是指外设准备好数据后,主动向CPU发出中断请求(IRQ),CPU响应中断后暂停当前程序,转去执行中断服务程序完成数据传送,传送完毕后返回原程序继续执行。
与程序查询方式的核心区别:中断方式是设备主动通知CPU,程序查询方式是CPU主动查询设备。
2.2 中断的分类
(1) 按中断源分类
| 类型 | 来源 | 示例 |
|---|---|---|
| 外部中断(硬件中断) | CPU外部设备 | I/O设备中断、定时器中断、电源故障 |
| 内部中断(软件中断/异常) | CPU内部 | 除法溢出、非法指令、缺页异常、断点 |
(2) 按是否可屏蔽分类
| 类型 | 特点 | 标志 |
|---|---|---|
| 可屏蔽中断 | 可通过中断屏蔽字暂时禁止响应 | INTR引脚 |
| 不可屏蔽中断(NMI) | 必须立即响应,无法屏蔽 | NMI引脚 |
(3) 按中断源的优先级分类
- 优先级固定:每个中断源有固定的优先级,高优先级可打断低优先级
- 优先级轮转:中断服务后该设备优先级降为最低
2.3 中断系统的基本组成
一个完整的中断系统需要以下硬件支持:
- 中断请求触发器:每个中断源一个,记录中断请求信号
- 中断屏蔽触发器:每个中断源一个,控制是否屏蔽该中断
- 中断判优逻辑:决定同时多个请求时的响应优先级
- 中断向量表:存放各中断服务程序的入口地址
- 中断允许触发器(IF):CPU中的全局中断使能标志
2.4 中断处理的完整过程
┌────────────────────────────────────┐
│ CPU执行主程序 │
│ (每条指令末尾检查中断) │
└──────────────┬─────────────────────┘
│ 检测到中断请求
▼
┌────────────────────────────────────┐
│ 1. 关中断(IF=0) │ ← 防止新中断打断保存现场
├────────────────────────────────────┤
│ 2. 保存断点(PC和PSW压栈) │ ← 保存返回地址和程序状态
├────────────────────────────────────┤
│ 3. 识别中断源(判优+确定中断号) │ ← 确定哪个设备请求中断
├────────────────────────────────────┤
│ 4. 保存现场(通用寄存器等压栈) │ ← 保护被中断程序的运行状态
├────────────────────────────────────┤
│ 5. 开中断(IF=1) │ ← 允许更高优先级中断嵌套
├────────────────────────────────────┤
│ 6. 执行中断服务程序 │ ← 完成数据传送等操作
├────────────────────────────────────┤
│ 7. 关中断(IF=0) │ ← 防止恢复现场时被打断
├────────────────────────────────────┤
│ 8. 恢复现场(通用寄存器出栈) │ ← 恢复被中断程序的运行状态
├────────────────────────────────────┤
│ 9. 开中断(IF=1) │ ← 恢复中断响应能力
├────────────────────────────────────┤
│ 10. 中断返回(IRET,恢复PC和PSW) │ ← 返回断点继续执行
└────────────────────────────────────┘关键步骤详解:
- 关中断→保存断点→保存现场:这三步必须在关中断状态下完成,否则保存现场过程可能被新中断打断,导致现场保存不完整。
- 开中断:在执行中断服务程序前开中断,允许中断嵌套(更高优先级的中断可打断当前中断服务)。
- 关中断→恢复现场→开中断→中断返回:恢复现场也必须在关中断状态下完成。
2.5 中断判优方式
(1) 硬件判优(优先级排队器)
- 并行优先级编码器:所有中断请求同时输入,硬件直接输出最高优先级的中断号
- 速度快,但硬件成本高
(2) 软件判优(程序查询)
- CPU依次查询各中断源的中断请求触发器
- 速度慢,但灵活、成本低
(3) 菊花链判优
- 类似总线链式仲裁,中断响应信号沿设备链传递
- 离CPU近的设备优先级高
2.6 中断向量与中断向量表
中断向量:中断服务程序的入口地址(或入口地址的指针)。
中断向量表:所有中断向量集中存放在内存的一个连续区域中。
- x86系统:中断向量表位于内存最低1KB(0x000~0x3FF),共256个表项,每项4字节(CS:IP)
- 每个中断源有一个中断类型号(0~255),作为中断向量表的索引
中断向量法的寻址过程:
- 中断源提供中断类型号 n
- CPU计算中断向量地址 = n × 4(x86中每项4字节)
- 从该地址取出中断服务程序的入口地址(CS和IP)
- 跳转到中断服务程序执行
三、记忆辅助
中断处理十步口诀:"关保识保开关恢关开返"——关中断→保存断点→识别中断源→保存现场→开中断→执行服务→关中断→恢复现场→开中断→中断返回。
两次关中断的必要性:
- 第一次关中断:保护"保存现场"过程不被打断
- 第二次关中断:保护"恢复现场"过程不被打断
- 口诀:"存恢都要关"
断点 vs 现场:
- 断点 = PC + PSW(程序计数器和程序状态字,即"从哪里回来")
- 现场 = 通用寄存器内容(即"回来后继续干活需要的工具")
- 口诀:"断点是地址,现场是数据"
中断向量表 = "电话簿":中断类型号是"姓名",中断向量(入口地址)是"电话号码"。查电话簿(向量表)就能找到号码(入口地址)。
四、例题精解
例题1
题目:在中断处理过程中,下列操作的正确顺序是( )。 ① 保存断点 ② 保存现场 ③ 开中断 ④ 关中断 ⑤ 执行中断服务程序 ⑥ 中断返回 A. ④①②③⑤③⑥ B. ④①②③⑤⑥ C. ①④②③⑤⑥ D. ④②①③⑤⑥
四步解题:
Step 1 审题:确定中断处理各步骤的正确顺序。
Step 2 知识定位:标准中断处理流程:关中断→保存断点→保存现场→开中断→执行服务→关中断→恢复现场→开中断→中断返回。
Step 3 逐项分析:
- A:④①②③⑤③⑥ → 关→断点→现场→开→服务→开→返回。缺少恢复现场步骤,且多了一个开中断,但题目选项中⑥代表中断返回,A中中③⑤③表示"开→服务→开",中间缺少关中断和恢复现场。
- B:④①②③⑤⑥ → 关→断点→现场→开→服务→返回。缺少恢复现场和最后的开中断,不完整。
- C:①④②③⑤⑥ → 断点→关→现场→开→服务→返回。先保存断点再关中断,错误(应先关中断再保存断点)。
- D:④②①③⑤⑥ → 关→现场→断点→开→服务→返回。先保存现场再保存断点,错误(应先保存断点再保存现场)。
重新审视选项,A的③⑤③可以理解为"开中断→执行服务→关中断"(服务过程中的开中断和结束时的关中断),但缺少明确的恢复现场。实际上选项A最接近完整流程:④(关)①(断点)②(现场)③(开)⑤(服务)③(关+恢复)⑥(返回)。
Step 4 答案:A(最接近正确流程的选项)
例题2
题目:某系统有4个中断源D1、D2、D3、D4,优先级从高到低为 D1>D2>D3>D4。中断服务程序执行时间分别为:D1=10μs,D2=20μs,D3=15μs,D4=5μs。在t=0时刻,D2和D3同时请求中断;在t=8μs时刻,D1请求中断。画出中断处理的时间线,并计算CPU返回主程序的时刻。
四步解题:
Step 1 审题:多中断嵌套场景,需要按优先级处理。
Step 2 知识定位:
- 高优先级中断可打断低优先级中断服务(中断嵌套)
- 同时请求时响应优先级高的
Step 3 时间线分析:
t=0:D2和D3同时请求,D2优先级高 → 响应D2,开始D2的服务程序
t=8:D1请求中断,D1优先级 > D2 → D2被打断,保存D2现场,转去执行D1
t=8~18:执行D1服务程序(10μs)
t=18:D1服务完成,恢复D2现场,继续D2服务
t=18~30:继续执行D2剩余服务(20μs - 8μs已完成 = 12μs剩余)
t=30:D2服务完成,检查D3请求 → 响应D3
t=30~45:执行D3服务程序(15μs)
t=45:D3服务完成,无其他中断 → 返回主程序
时间线:
t=0 t=8 t=18 t=30 t=45
|---D2---|--D1--|---D2续---|---D3---|→返回主程序
(被打断) (恢复继续)Step 4 答案:CPU返回主程序的时刻为 t=45μs。
五、考情分析
| 维度 | 分析 |
|---|---|
| 出题频率 | 近10年约出现12-15次,高频重点 |
| 题型 | 选择题(中断流程辨析、中断判优)、综合题(中断嵌套时间分析) |
| 难度 | ★★★★(中断嵌套分析较复杂) |
| 考查重点 | 中断处理流程的顺序;中断嵌套的时间分析;中断向量寻址;断点与现场的区别 |
| 命题趋势 | 中断嵌套时间线分析是综合题热门;与DMA方式对比是选择题常考 |
六、易错点
断点保存和现场保存的顺序:必须先保存断点(PC+PSW),再保存现场(通用寄存器)。顺序不能颠倒,因为保存断点是硬件自动完成的(压栈),保存现场是中断服务程序开头由软件完成的。
中断嵌套的关键:在执行中断服务程序之前要开中断,否则更高优先级的中断无法打断当前服务。但如果系统不允许嵌套,则服务期间保持关中断状态。
"中断请求"≠"中断响应":中断请求是设备发出的信号;中断响应是CPU决定处理该中断。CPU可能因中断屏蔽、关中断等原因不响应请求。
中断向量表的地址计算:中断向量地址 = 中断类型号 × 每项字节数。x86中每项4字节,所以类型号n的向量地址 = n×4。不要忘记这个乘法。
软件中断(INT指令)也是中断:INT n指令会触发中断类型号为n的中断处理,走中断向量表的完整流程,不要以为只有硬件才能触发中断。
七、来源标注
| 来源 | 说明 |
|---|---|
| 《计算机组成原理》(唐朔飞) | 第8章 I/O系统,程序中断方式 |
| 《计算机组成原理》(蒋本珊) | 第7章 中断方式 |
| 408统考大纲 | 第六章 总线与I/O系统 - 程序中断方式 |
| 历年真题 | 2009-2025年408真题高频考点 |