中断

思维导图下载:点我

在这里插入图片描述

一、概念

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. 中断屏蔽技术

由于中断请求有优先级,因此需要考虑如何设定中断的优先级,一种可行的方法是使用中断屏蔽字,举个栗子:

中断源ABCD
A1110
B0100
C0110
D1111

在上述表格中,每个中断源都有一个屏蔽触发器,1 表示屏蔽该中断源的请求,0 表示可以正常申请,所有屏蔽触发器组合在一起便构成一个屏蔽字执行的轨迹。

此时中断处理的次序以此为:D > A > C > B 。

9. 多重中断

指在中断服务程序处理中断的过程中,出现了更高优先级的中断请求,此时需要暂停当前的中断服务程序,转而去响应它。

此时的中断处理过程与正常处理的过程相同,只不过在相当于在中断处理中间又进行了一次中断服务,把前一个中断当作普通程序处理即可。

10. 向量中断、中断向量、向量地址

  • 中断向量:中断服务程序的入口地址称为中断向量;所有中断的中断向量构成一张表,称为中断向量表;中断向量的跳转指令构成一张表,成为中断向量跳转表。
  • 向量地址:又称为中断类型号,指的是中断向量的地址,简单来说就是中断服务程序的入口地址的地址。
  • 向量中断:指一种识别中断源的技术或方式,识别中断源的目的是找到向量地址。

11. 中断响应优先级、中断处理优先级

  • 中断响应优先级:由硬件排队线路或中断查询程序的查询顺序决定,不可动态改变。
  • 中断处理优先级:指由中断屏蔽字决定是否响应新到的中断请求,即中断请求的重要性。

12. 系统调用

指用户在程序中掉用操作系统所提供的一些子功能,系统调用可视为特殊的子程序。系统调用不一定会引发中断机制,只有进入核心态才会引发中断。

二、中断处理的过程

1. 关中断

CPU响应中断后,首先要保护程序的现场状态,在保护现场状态的过程中,CPU不应响应更高级的中断请求或执行其他任务,否则会破坏现场信息,导致错误发生。

简单来说关中断就是对CPU上了锁,不允许被其他中断源使用。

2. 保存断点

为保证中断服务程序执行完毕后能正确返回到原来的程序,必须将原来的程序的断点保存起来,即将程序计数器(PC)中的内容用一个特殊的系统栈保存起来。

3. 引出中断服务程序

就是取出中断服务程序的入口地址送入程序计数器(PC)

以上三个步骤被称为中断隐指令,下面六个步骤被称为中断服务程序。

4. 保存现场和屏蔽字

进入中断服务程序后,首先要保存现场信息,即程序状态字寄存器(PSWR)和某些通用寄存器的内容。这些内容也被称为中断上下文信息,通常有两种保存方式:

  1. 集中式保存:在内存的系统区中设置一个中断现场保存栈,所有中断的现场信息统一保存在该栈中。
  2. 分散式保存:在每个进程的PCB中设置一个核心栈,一旦程序被中断,它的中断现场信息就保存在自己的核心栈中。

5. 开中断

允许更高级的中断请求得到响应。

简单来说就是对CPU开了锁,允许其他更高级的中断源使用。

6. 执行中断服务程序

开始处理中断请求。

7. 关中断

同步骤1。

8. 恢复现场和屏蔽字

将现场和屏蔽字恢复到原来的状态,即准备返回断点。

9. 开中断、中断返回

此时完成了中断的处理,可以将程序返回到原来的断点处,以便继续执行源程序。

三、作用

简单来说程序中断的目的就是能够使CPU能够与外设并行工作,并在外设工作完成时通知CPU去进行处理。

  1. 实现CPU与I/O设备的并行工作
  2. 处理硬件故障和软件错误
  3. 实现人机交互,用户干预机器需要用到中断系统
  4. 实现多道程序、分时系统,多道程序的切换需借助中断系统
  5. 实时处理需借助中断系统来实现快速响应
  6. 实现应用程序和操作系统(管态程序)的切换,成为“软中断”
  7. 多处理器系统中各处理器之间的信息交流和任务切换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BeZer0

打赏一杯奶茶支持一下作者吧~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值