📜  中断

📅  最后修改于: 2021-09-27 14:52:45             🧑  作者: Mango

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

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

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

硬件中断:
在硬件中断中,所有设备都连接到中断请求线。单个请求行用于所有 n 个设备。为了请求中断,设备关闭其关联的开关。当设备请求中断时,INTR 的值是来自各个设备的请求的逻辑 OR。

处理 IRQ 所涉及的事件序列:

  1. 设备发出 IRQ。
  2. 处理器中断当前正在执行的程序。
  3. 设备被告知其请求已被识别,并且设备停用请求信号。
  4. 执行请求的操作。
  5. 中断被使能并且被中断的程序被恢复。

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

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

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