适合读者:软考中级备考同学
阅读时间:3.5分钟
内容:中断处理流程、中断优先级、中断嵌套、中断屏蔽字、例题
1. 中断处理的基本概念
中断是指CPU在执行程序时,由于内部或外部事件(如外设请求、指令异常等)打断当前程序,转去执行一段特定的处理程序(中断服务程序),完成后再返回原程序继续执行的过程。
软考中常考查中断处理的完整流程、中断优先级判断以及中断嵌套的规则。
2. 中断处理过程(标准流程)
一次完整的中断处理包括以下几个步骤:
2.1 中断请求
外设或内部事件向CPU发出中断请求信号(IRQ)。
2.2 中断响应
CPU在每条指令执行结束后检测中断请求。若存在中断请求且中断允许(IF=1),则进入响应阶段。
2.3 保护现场
CPU自动将**程序计数器(PC)和程序状态字(PSW)**压入堆栈(保存断点和状态)。有些CPU还需保护其他寄存器的值(由软件完成)。
2.4 识别中断源
CPU需要确定是哪个设备发来的中断。常用方法:
- 向量中断:设备通过中断向量表提供中断服务程序入口地址。
- 查询中断:CPU依次查询各设备的中断状态寄存器,确定最高优先级的请求。
2.5 执行中断服务程序(ISR)
CPU跳转到对应的中断服务程序,完成数据处理(如从键盘读取字符)。
2.6 恢复现场
中断服务程序返回前,从堆栈中恢复之前保存的寄存器值、PC和PSW。
2.7 中断返回
执行中断返回指令(如IRET),CPU回到被中断的程序继续执行。
3. 中断优先级
当多个中断源同时发出请求时,CPU需要决定先处理哪个。中断优先级就是中断源的紧急程度或重要程度。
3.1 优先级设置原则
- 硬件故障 > 软件中断 > 外设请求
- 高速设备(如磁盘) > 低速设备(如键盘)
- 实时性要求高的设备优先
3.2 优先级实现方式
- 硬件优先级编码器:通过中断控制器(如8259A)自动选择最高优先级请求。
- 软件查询:CPU依次查询各设备状态,先查询到的优先级高(灵活但慢)。
4. 中断嵌套
当一个中断服务程序正在执行时,如果有更高优先级的中断请求到来,CPU可以暂停当前ISR,转而处理更高优先级的中断,这就是中断嵌套。
4.1 嵌套规则
- 高优先级中断可以打断低优先级中断。
- 同级中断不能互相打断(取决于系统设计,通常不允许)。
- 低优先级中断不能打断高优先级中断。
4.2 中断嵌套流程
主程序 → 低优先级ISR → (高优先级中断到达) → 保存低优先级ISR现场 → 执行高优先级ISR → 恢复低优先级ISR现场 → 继续低优先级ISR → 返回主程序4.3 中断屏蔽字(Mask)
中断屏蔽字是一个二进制位串,每位对应一个中断源。当某位为1时,对应的中断源被屏蔽(CPU不响应它的请求)。通过设置中断屏蔽字,可以动态改变中断优先级关系。
示例:中断屏蔽字为1011表示第2位(从0开始)对应的中断被屏蔽。
5. 中断处理与中断优先级:典型考题
题目1:以下关于中断处理过程的顺序,正确的是( )。
A. 中断请求 → 保护现场 → 识别中断源 → 执行ISR → 恢复现场 → 中断返回
B. 中断请求 → 识别中断源 → 保护现场 → 执行ISR → 恢复现场 → 中断返回
C. 中断请求 → 保护现场 → 执行ISR → 识别中断源 → 恢复现场 → 中断返回
D. 中断请求 → 执行ISR → 保护现场 → 恢复现场 → 中断返回
答案:A(先保护现场才能安全执行ISR,识别中断源通常在保护现场之后)
题目2:若系统正在执行一个低优先级的中断服务程序,此时有一个高优先级中断到来,则CPU会( )。
A. 忽略高优先级中断
B. 立即响应高优先级中断,但需等低优先级ISR完成后才执行
C. 立即暂停低优先级ISR,响应高优先级中断(中断嵌套)
D. 重启系统
答案:C
题目3(概念判断):中断屏蔽字只能屏蔽外部中断,不能屏蔽内部异常。( )
答案:错误。中断屏蔽字通常针对可屏蔽中断,内部异常(如除零)一般不可屏蔽。
题目4(综合):某系统有4个中断源,优先级从高到低为1>2>3>4。当前CPU正在执行中断源3的ISR,此时中断源2和中断源4同时产生中断请求。请问CPU会如何处理?
解:
- 中断源2优先级高于当前ISR(3),因此会打断3,执行2的ISR。
- 中断源4优先级低于当前ISR(3),但当前ISR已被2打断,所以4会等待,直到2和3都完成后才可能响应(如果期间没有更高优先级中断)。
- 最终执行顺序:先完成2 → 返回3继续 → 完成后响应4(如果4还挂起)。
答案:立即响应中断源2,执行完2后返回中断源3,完成3后再响应中断源4。
6. 中断优先级与屏蔽字示例
假设4个中断源(0最低,3最高),初始屏蔽字如下:
| 中断源 | 屏蔽字(位3~0) | 说明 |
|---|---|---|
| 3 | 1110 | 屏蔽比自己低的中断2、1、0 |
| 2 | 1101 | 屏蔽自己及更低的1、0?实际常用屏蔽字只屏蔽同级及更低 |
| 1 | 1011 | 屏蔽1及0 |
| 0 | 0111 | 不屏蔽任何(或屏蔽自己) |
实际考试中只需理解:屏蔽字的某位为1表示屏蔽对应的中断源。
7. 记忆口诀
中断流程:请求响应保现场,识别源执行ISR,恢复现场再返回。
优先级:高可打断低,同级不嵌套。
屏蔽字:哪位置一哪屏蔽,动态调整优先级。
8. 给备考同学的一句话
中断处理与优先级是计算机系统的重要组成部分。考试重点:
- 中断处理流程的顺序(尤其是保护现场与识别源的位置)。
- 中断嵌套的条件:高优先级可打断低优先级。
- 中断屏蔽字的作用:屏蔽某些中断源,改变相对优先级。
遇到综合题,先画出中断优先级顺序,再按规则模拟处理过程,即可得出答案。
🔔本专栏日更2篇,点击头像 → 专栏《软考中级高频考点》订阅
#软考中级 #软件设计师 #中断处理 #中断优先级 #中断嵌套 #计算机系统知识