📜  中断

📅  最后修改于: 2021-06-28 09:34:59             🧑  作者: Mango

中断是当流程或事件需要立即引起注意时由硬件或软件发出的信号。它向处理器发出高优先级的警报,要求中断当前的工作进程。在I / O设备中,总线控制线之一专用于此目的,被称为中断服务程序(ISR)

当设备在流程i中引发中断时,处理器首先完成指令i的执行。然后,它向程序计数器(PC)加载ISR的第一条指令的地址。在将地址加载到程序计数器之前,被中断指令的地址将移动到一个临时位置。因此,在处理了中断之后,处理器可以继续处理i + 1。

在处理器处理中断时,它必须通知设备其请求已被识别,以便停止发送中断请求信号。同样,保存寄存器以便将来可以恢复被中断的过程,增加了接收中断到开始执行ISR之间的延迟。这称为中断延迟。

硬件中断:
在硬件中断中,所有设备都连接到中断请求线。一条请求线用于所有n个设备。要请求中断,设备会关闭其关联的开关。当设备请求中断时,INTR的值是来自各个设备的请求的逻辑或。

处理IRQ涉及的事件顺序:

  1. 设备发出IRQ。
  2. 处理器中断当前正在执行的程序。
  3. 通知该设备其请求已被识别,并且该设备取消激活请求信号。
  4. 所请求的动作已执行。
  5. 允许中断并恢复被中断的程序。

处理多个设备:
当一个以上的设备发出中断请求信号时,则需要附加信息来确定首先考虑哪个设备。以下方法用于决定选择哪个设备:轮询,向量中断和中断嵌套。这些解释如下。

  1. 轮询:
    在轮询中,遇到IRQ位置1的第一个设备是首先要服务的设备。调用适当的ISR来提供相同的服务。这很容易实现,但是通过查询所有设备的IRQ位会浪费大量时间。
  2. 向量中断:
    在向量中断中,请求中断的设备通过在总线上向处理器发送特殊代码来直接标识自己。这使处理器能够识别产生中断的设备。特殊代码可以是ISR的起始地址,也可以是ISR在内存中的位置,称为中断向量。
  3. 中断嵌套:
    在这种方法中,I / O设备以优先级结构进行组织。因此,可以识别来自较高优先级设备的中断请求,而不能识别来自较低优先级设备的请求。为了实现这一点,每个进程/设备(甚至是处理器)。处理器仅接受优先级高于其的设备/进程的中断。

处理器优先级编码在PS(进程状态寄存器)的几位中。可以通过写入PS的程序指令对其进行更改。仅在执行OS例程时,处理器才处于监督模式。在执行应用程序之前,它将切换到用户模式。