概念

所谓中断,是指CPU对系统发生的某个事件做出的一种反应,它使CPU暂停正在执行的程序,保留现场后自动执行相应的处理程序,处理该事件后,如被中断程序优先级最高,则返回断点。
中断源:引起终端的事件或发出中断请求的来源
中断请求:中断源向CPU提出的处理请求称为中断请求
断点:发生中断时,被打断程序的暂停点称为断点

作用

  1. 提高主机的利用率,使高速CPU和低速外设并行工作
  2. 及时进行事故处理
  3. 实现分时操作
  4. 实现实时操作
  5. 方便程序调试

类型

中断

由CPU以外的事件引起的
异步的,因为中断的产生与当前正在执行的程序无关

异常

来自CPU内部的事件或执行程序中的事件引起的过程
是同步的,因为他们是由于执行指令引起的

主要有:出错、陷入、可编程异常
出错和陷入的最重要区别:处理完异常事件返回时,出错事件会重新执行导致异常的那条指令;而陷入不会,陷入主要用于程序的调试
可编程异常:主要是由于用户在C程序中使用了系统调用而引发的过程

中断处理过程

中断处理的基本过程包括中断请求、中断判优、中断响应、中断服务 和中断返回等五个阶段。

1.中断请求阶段
1)发生在CPU内部的中断(内部中断),不需要中断请求,CPU内部的中断控制逻辑直接接收处理。
2)外部中断请求由中断源提出。外部中断源利用CPU的中断输入引脚输入中断请求信号。一般CPU设有两个中断请求输入引脚:可屏蔽中断请求输入引脚和不可屏蔽中断请求输入引脚。
1.1中断请求触发器
每个中断源发中断请求信号的时间是不确定的,而CPU在何时响应中断也是不确定的。所以,每个中断源都有一个中断请求触发器,锁存自己的中断请求信号,并保持到CPU响应这个中断请求之后才将其清除。
1.2中断允许触发器
在CPU内部有一个中断允许触发器,当其为“1”时,允许CPU响应中断,称为开中断。若其为“0”,不允许CPU响应中断,中断被屏蔽,称为关中断。
通常,当CPU复位时,中断允许触发器也复位为“0”,即关中断。当 CPU中断响应时,CPU自动关闭中断,禁止接受另一个新的中断。
中断允许触发器的状态可以用开中断或关中断指令来设置。

2.中断判优阶段
CPU一次只能接受一个中断源的请求,当多个中断源同时向CPU提出中断请求时,CPU必须找出中断优先级最高的中断源,这一过程称为中断判优。
中断判优可以采用硬件方法,也可采用软件方法。
2.1软件判优
CPU检测到中断请求后,首先读取中断请求寄存器的内容,逐位检测它们的状态,检测到某一位为1,就确定对应的中断源有中断请求,转去执行它的中断服务程序。
先检测哪一个,哪一个的优先级就高,后检测哪一个,哪一个优先级就低,检测的顺序就是各中断源的优先级顺序。
2.2硬件判优
利用专门的硬件电路确定中断源的优先级,有两种常见的方式:菊花链判优电路和中断控制器判优。
2.2.1菊花链判优电路
设计思想:每个中断源都有一个中断逻辑电路,所有的中断逻辑电路形成一个链,犹如菊花链。排在链前端的中断源优先级最高,越靠后的设备优先级越低。
实现过程: CPU收到中断请求,如果允许中断,CPU发出中断响应信号。中断响应信号首先到达菊花链的前端,如果中断源1提出了中断请求,它就会截获中断响应信号,封锁它,使它不能向下一个中断源传送。不论下面的中断源有没有提出中断请求,都不可能接收到中断响应信号,因此它们的中断请求也不能被响应。
2.2.2中断控制器判优
中断控制器,如Intel8259A,可以以多种方式设置中断源的中断优先级。中断控制器中有一个中断优先级判别器,它自动判别出目前提出中断请求的优先级最高的中断源,并将它的中断向量码送到数据总线,CPU接收中断向量码并据此找到它的中断服务程序。

3.中断响应阶段
经过中断判优,中断处理就进入中断响应阶段。中断响应时,CPU向中断源发出中断响应信号,同时:
①保护硬件现场;
②关中断;
③保护断点;
④获得中断服务程序的入口地址。

4.中断服务阶段
中断服务程序的一般结构为:
1)保护现场。在中断服务程序的起始部分安排若干条入栈指令,将各寄存器的内容压入堆栈保存。
2)开中断。在中断服务程序执行期间允许级别更高的中断请求中断现行的中断服务程序,实现中断嵌套。
3)中断服务。完成中断源的具体要求。
4)恢复现场。中断服务程序结束前,必须恢复主程序的中断现场。通常是将保存在堆栈中的现场信息弹出到原来的寄存器中。
5)中断返回。返回到原程序的断点处,继续执行原程序。

5.中断返回阶段
返回到原程序的断点处,恢复硬件现场,继续执行原程序。
中断返回操作是中断响应操作的逆过程。

中断响应

  1. 中断当前程序的执行
  2. 保存源程序的断点信息
  3. 转到相应的处理程序

    中断处理

    现场保护

    通常中断响应时硬件已经保存PC和PS的内容,但还是有一存被中断程序的现场是为了在中断处理完之后,可以返回原来被中断的地方,在原有的运行环境信息需要保存起来
  • 集中式保护:操作系统内存区中设置一个中断现场保护栈,所有中断的现场信息同意保存在这个栈中
  • 分散式保护:在每个进程的PCB中设置一个核心栈,一旦其程序被中断,他的中断现场信息就保存在自己的核心栈中。

    分析原因

    中断处理的主要工作是根据中断源确定中断原因,然后转入相应的程序去执行,即确定中断源或查证中断发生,识别中断类型和中断设备型号

    处理中断

    核心调用中断处理程序,对中断程序进行处理

    恢复现场

    选取可以立刻执行的进程
    恢复工作现场,把先前保存在中断现场区中的信息取出复原

中断

中断优先级

与系统相关的优先权称作为中断优先级。

中断优先级高的在线路上有优先响应权,可以通过线路排队的办法实现;在不同级别的中断同时到达的情况下,级别高的中断源先被响应,同时封锁对其他终端的响应,他被响应之后,解除封锁,再响应次高级的中断。

级别高的一般有大段别的低级的中断处理程序的权利;在处理高级的中断的过程中,一般不允许低级的中断干扰他,也不允许后来的同级的中断打断中断的处理程序

中断屏蔽

提出中断请求后,CPU不予响应的状态。

通常用于处理某个中断时防止同级终端的干扰;在处理一段不可分割、必须连续执行的程序时,防止意外事件把他打断

作用

  1. 延迟或禁止对某些中断的响应
  2. 协调中断响应与中断处理的关系
    • 硬件中断排队线路只是决定若干中断同时来到机器响应的先后次序,但处理终端的优先次序却不一定与相应次序相同
  3. 防止同类中断相互干扰

方式

因机器而异,可以用于整级屏蔽也可以用于单个屏蔽

  • 修改PSW中某些位来屏蔽某些中断,(程序员通过特权指令设置或更改屏蔽位信息)
  • 采用提高处理机的执行优先级的方式屏蔽中断

    中断禁止

    指在可引起中断的事件发生时系统不接受该中断信号,因而不可能提出中断请求而导致中断

简言之,就是不让某些事件产生中断

中断屏蔽 vs 中断禁止

中断屏蔽表明硬件能够接收中断但不能响应,要延迟一段时间,等待中断开放。
而后之者硬件不允许事件提出中断请求,从而使中断被禁止

多重中断

多个中断同时出现

处理

顺序处理方式

当一个中断正在处理期间,屏蔽其他终端;在该中断被处理完后,开放中断,由处理器查看有无上未处理的中断。

缺点:没有考虑相对优先级或时间的紧迫程度

嵌套处理方式

对每类中断赋予不同的优先级,允许高优先级的中断打断低优先级的中断处理程序
image.png

王道笔记

中断基础

引入中断机制,实现多道程序并发执行
本质:发生中断就意味着操作系统的介入,开展管理工作
具体执行:CPU收到计时器发出的中断信号,切换为和心态对中断进行处理;操作系统内核负责对中断信号进行处理
image.png

中断分类

image.png

外中断处理

image.png

Summary

image.png