思维导图下载:点我
一、概念
1. 中断(Interruption)
也称外中断,指来自CPU执行指令以外的事件的发生,如设备发出I/O结束中断,表示设备输入/输出处理已经完成,希望处理机能够及时响应。
2. 异常(Exception)
也称内中断、例外或陷入(trap),指源自CPU执行指令内部的事件,如程序的非法操作码、地址越界、算术溢出等错误。对异常的处理一般要依赖于当前程序的运行现场,而且异常不能被屏蔽,一旦出现应当立即处理。
3. 中断请求
指中断源向CPU发送中断请求信号。
4. 硬件中断、软件中断
- 硬件中断:通过外部的硬件产生的中断,属于外中断。
- 软件中断:通过某条指令产生的中断,可以变成实现,属于内中断。
5. 非屏蔽中断、可屏蔽中断
二者均属于外中断:
- 非屏蔽中断:属于硬件中断,不可通过屏蔽中断请求 NMI 控制,不受中断标志位 IF 影响,在关中断情况下也会被响应。
- 可屏蔽中断:属于硬件中断,通过中断请求标记触发器 INTR 控制,受中断标志位 IF 影响,在关中断情况下不接受中断请求。
6. 中断判优
中断系统在任一瞬间只能相应一个中断源的请求,因此当多个中断源同时提出请求时,需要通过中断判优逻辑来确定响应哪个中断源的请求,可以用硬件或软件实现。
硬件是通过硬件排队器实现的,既可以设置在CPU中,也可以分散在各个中断源中。
软件是通过查询程序实现的。
从优先级的角度考虑,通常有如下关系:
- 硬件故障中断 > 软件中断
- 非屏蔽中断 > 可屏蔽中断
- DMA请求 > I/O设备传送的中断请求
- 高速设备 > 低速设备
- 输入设备 > 输出设备
- 实时设备 > 普通设备
7. 响应中断的条件
- 中断源有中断请求
- CPU允许中断及开中断
- 一条指令执行完毕,且没有更加紧急的任务:在指令周期中,执行指令的最后一个周期为中断周期,此时才允许响应中断
8. 中断屏蔽技术
由于中断请求有优先级,因此需要考虑如何设定中断的优先级,一种可行的方法是使用中断屏蔽字,举个栗子:
中断源 | A | B | C | D |
---|---|---|---|---|
A | 1 | 1 | 1 | 0 |
B | 0 | 1 | 0 | 0 |
C | 0 | 1 | 1 | 0 |
D | 1 | 1 | 1 | 1 |
在上述表格中,每个中断源都有一个屏蔽触发器,1 表示屏蔽该中断源的请求,0 表示可以正常申请,所有屏蔽触发器组合在一起便构成一个屏蔽字执行的轨迹。
此时中断处理的次序以此为:D > A > C > B 。
9. 多重中断
指在中断服务程序处理中断的过程中,出现了更高优先级的中断请求,此时需要暂停当前的中断服务程序,转而去响应它。
此时的中断处理过程与正常处理的过程相同,只不过在相当于在中断处理中间又进行了一次中断服务,把前一个中断当作普通程序处理即可。
10. 向量中断、中断向量、向量地址
- 中断向量:中断服务程序的入口地址称为中断向量;所有中断的中断向量构成一张表,称为中断向量表;中断向量的跳转指令构成一张表,成为中断向量跳转表。
- 向量地址:又称为中断类型号,指的是中断向量的地址,简单来说就是中断服务程序的入口地址的地址。
- 向量中断:指一种识别中断源的技术或方式,识别中断源的目的是找到向量地址。
11. 中断响应优先级、中断处理优先级
- 中断响应优先级:由硬件排队线路或中断查询程序的查询顺序决定,不可动态改变。
- 中断处理优先级:指由中断屏蔽字决定是否响应新到的中断请求,即中断请求的重要性。
12. 系统调用
指用户在程序中掉用操作系统所提供的一些子功能,系统调用可视为特殊的子程序。系统调用不一定会引发中断机制,只有进入核心态才会引发中断。
二、中断处理的过程
1. 关中断
CPU响应中断后,首先要保护程序的现场状态,在保护现场状态的过程中,CPU不应响应更高级的中断请求或执行其他任务,否则会破坏现场信息,导致错误发生。
简单来说关中断就是对CPU上了锁,不允许被其他中断源使用。
2. 保存断点
为保证中断服务程序执行完毕后能正确返回到原来的程序,必须将原来的程序的断点保存起来,即将程序计数器(PC)中的内容用一个特殊的系统栈保存起来。
3. 引出中断服务程序
就是取出中断服务程序的入口地址送入程序计数器(PC)
以上三个步骤被称为中断隐指令,下面六个步骤被称为中断服务程序。
4. 保存现场和屏蔽字
进入中断服务程序后,首先要保存现场信息,即程序状态字寄存器(PSWR)和某些通用寄存器的内容。这些内容也被称为中断上下文信息,通常有两种保存方式:
- 集中式保存:在内存的系统区中设置一个中断现场保存栈,所有中断的现场信息统一保存在该栈中。
- 分散式保存:在每个进程的PCB中设置一个核心栈,一旦程序被中断,它的中断现场信息就保存在自己的核心栈中。
5. 开中断
允许更高级的中断请求得到响应。
简单来说就是对CPU开了锁,允许其他更高级的中断源使用。
6. 执行中断服务程序
开始处理中断请求。
7. 关中断
同步骤1。
8. 恢复现场和屏蔽字
将现场和屏蔽字恢复到原来的状态,即准备返回断点。
9. 开中断、中断返回
此时完成了中断的处理,可以将程序返回到原来的断点处,以便继续执行源程序。
三、作用
简单来说程序中断的目的就是能够使CPU能够与外设并行工作,并在外设工作完成时通知CPU去进行处理。
- 实现CPU与I/O设备的并行工作
- 处理硬件故障和软件错误
- 实现人机交互,用户干预机器需要用到中断系统
- 实现多道程序、分时系统,多道程序的切换需借助中断系统
- 实时处理需借助中断系统来实现快速响应
- 实现应用程序和操作系统(管态程序)的切换,成为“软中断”
- 多处理器系统中各处理器之间的信息交流和任务切换