操作系统中的中断是什么?2025 年 4 月 28 日 | 阅读 9 分钟 中断是一种由硬件或软件发出的信号,用于指示一个进程或事件需要立即处理。它会通知处理器有一个高优先级的进程需要中断当前正在执行的进程。在 I/O 设备中,其中一条总线控制线专为此目的而设,称为 **中断服务例程** (ISR)。 当设备向进程发出中断请求时,处理器首先会完成当前指令的执行。然后,它会将 **程序计数器** (PC) 加载为 ISR 第一条指令的地址。在将程序计数器加载为地址之前,中断指令的地址会被移动到一个临时位置。因此,在处理完中断后,处理器可以继续进行原来的进程。 当处理器处理中断时,它必须告知设备其请求已被识别,以停止发送中断请求信号。此外,保存寄存器以便将来可以恢复被中断的进程会增加从接收中断到 ISR 执行开始之间的时间延迟。这被称为 **中断延迟**。 ![]() 一台计算机一次只能执行一个计算机指令。但是,由于它可以被中断,所以它可以管理程序或指令集的执行方式。这被称为 **多任务处理**。它允许用户同时执行许多不同的任务,而计算机则负责管理用户启动的程序。当然,计算机以极快的速度运行,使得所有用户任务似乎都在同时进行。 操作系统通常包含一些称为 **中断处理程序** 的代码。中断处理程序会为中断设置优先级,并在有多个中断等待处理时将它们保存在队列中。操作系统还有一个名为 **调度程序** 的小程序,它负责决定下一个要控制的程序。 中断类型中断信号可能因硬件或软件事件而发出。它们分别被归类为 **硬件中断** 或 **软件中断**。 ![]() 1. 硬件中断硬件中断是一种与硬件状态相关的条件,可能由外部硬件设备发出信号,例如 PC 上的中断请求 (IRQ) 线,或者被嵌入处理器逻辑中的设备检测到,以告知操作系统该设备需要关注。例如,按下键盘按键或移动鼠标会触发硬件中断,导致处理器读取按键或鼠标位置。 硬件中断可能与处理器时钟异步到达,并且可能在指令执行的任何时候发生。因此,所有硬件中断信号都通过与处理器时钟同步的条件进行处理,并且仅在指令执行边界起作用。 在许多系统中,每个设备都与一个特定的 IRQ 信号相关联。这使得能够快速确定哪个硬件设备正在请求服务并加快对该设备的响应速度。 在一些旧系统中,所有中断都转到同一个位置,然后操作系统使用专用指令来确定最高优先级的未屏蔽中断。在现代系统中,通常为每种类型的中断或每个中断源都有一个不同的中断例程,通常实现为一个或多个中断向量表。硬件中断进一步分为两种类型,例如:
2. 软件中断处理器在执行特定指令或满足某些条件时会请求软件中断。每个软件中断信号都与一个特定的中断处理程序相关联。 软件中断可能通过执行一条特殊的指令来有意触发,该指令在设计时执行时会调用中断。此类指令的功能类似于子程序调用,并用于各种目的,例如请求操作系统服务和与设备驱动程序交互。 软件中断也可能由于程序执行错误而意外触发。这些中断通常称为 **陷阱** 或 **异常**。 处理多个设备当多个设备发出中断请求信号时,需要附加信息来决定首先考虑哪个设备。以下方法用于决定首先选择哪个设备: ![]()
中断处理我们知道指令周期包含取指、解码、执行和读/写功能。在每个指令周期之后,处理器都会检查是否有中断需要处理。如果系统中没有中断,它将继续执行由指令寄存器给出的下一个指令周期。如果存在中断,它将触发中断处理程序。处理程序将停止当前正在处理的指令,将其配置保存在寄存器中,并从中断向量表中给出的位置加载中断的程序计数器。 在处理器处理完中断后,中断处理程序将从保存的寄存器中加载指令及其配置。进程将从中断处恢复执行。保存旧指令的处理配置并加载新中断配置的过程也称为 **上下文切换**。有不同类型的中断处理程序。
中断处理程序也称为中断服务例程 (ISR)。ISR 的主要特点是:
中断延迟当发生中断时,通过执行 ISR 来服务中断可能不会立即通过上下文切换开始。中断发生与 ISR 执行开始之间的时间间隔称为中断延迟。
CPU 如何响应中断理解操作系统工作原理的关键点在于了解 CPU 在发生中断时所做的事情。CPU 硬件为每次中断执行相同的操作,从而允许操作系统从当前正在运行的用户进程手中夺取控制权。切换正在运行的进程以执行内核代码称为 **上下文切换**。 CPU 依赖几个寄存器中的数据来正确处理中断。一个寄存器保存指向当前正在运行进程的进程控制块的指针,并且每次将进程加载到内存时都会设置此寄存器。另一个寄存器保存指向包含指向操作系统内核中用于中断处理程序和系统调用的指令的指针的表的指针。当操作系统在启动时初始化时,此寄存器中的值和表的内容就会被设置。CPU 执行以下操作以响应中断:
![]() CPU 使用表和中断向量来查找 OS 以响应中断的代码。下面的图显示了一个软件中断。 ![]() 随着计算机的运行,处理会在接收到硬件和软件中断时在用户进程和操作系统之间切换。 触发方法每个中断信号输入都被设计为由逻辑信号电平或特定信号边沿(电平转换)触发。电平敏感输入会持续请求处理器服务,只要输入到特定(高或低)逻辑电平。边沿敏感输入对信号边沿做出反应:特定的(上升或下降)边沿将导致服务请求被锁存。当执行中断处理程序时,处理器会重置锁存器。 ![]() 1. 电平触发电平触发中断是通过将中断信号保持在其特定的(高或低)活动逻辑电平来请求的。设备通过将信号驱动到活动电平并保持在那里来调用电平触发中断。当处理器发出命令时,通常是在设备被服务之后,它会取消信号。 处理器在每个指令周期中对中断输入信号进行采样。如果在采样时断言了信号,处理器将识别中断请求。 电平敏感输入允许多个设备通过有线 OR 连接共享一个公共中断信号。处理器进行轮询以确定哪些设备正在请求服务。在服务完一个设备后,处理器可能会再次进行轮询,并在必要时,在退出 ISR 之前服务其他设备。 2. 边沿触发边沿触发中断是通过中断线上的电平转换(下降沿(高到低)或上升沿(低到高))发出的中断。希望发出中断的设备会将一个脉冲驱动到线上,然后将其释放到其非活动状态。如果脉冲太短以至于无法被轮询 I/O 检测到,那么可能需要特殊的硬件来检测它。 |
我们请求您订阅我们的新闻通讯以获取最新更新。