中断线和中断号有什么区别

逆向工程 系统调用
2021-07-04 22:58:10

中断线和中断号(如 0x80)有什么区别?此外,IRQ 与系统调用有何关联?

1个回答

LMGTFY :

中断是从设备(例如键盘)到 CPU 的信号,告诉它立即停止当前正在执行的操作并执行其他操作。例如,键盘控制器在按下某个键时发送中断。为了知道在特定中断发生时如何调用内核,CPU 有一个称为 IDT 的表,它是 OS 设置的向量表,并存储在内存中。x86 CPU 上有 256 个中断向量,编号从 0 到 255,它们充当内核的入口点。CPU 支持的中断向量或入口点的数量因 CPU 架构而异。

大多数平台上通常有三类中断:

  • 例外:这些是由 CPU 内部生成的,用于警告正在运行的内核需要注意的事件或情况。在 x86 CPU 上,这些包括异常条件,例如双重故障、页面故障、一般保护故障等。

  • 中断请求 (IRQ) 或硬件中断:这种类型的中断由芯片组在外部产生,并通过锁存到 #INTR 引脚或相关 CPU 的等效信号来发出信号。目前常用的 IRQ 有两种类型。

    • IRQ 线路或基于引脚的 IRQ:这些通常在芯片组上静态路由。电线或线路从芯片组上的设备运行到 IRQ 控制器,该控制器将设备发送的中断请求序列化,将它们一个一个地发送到 CPU 以防止竞争。在许多情况下,IRQ 控制器会根据设备的优先级一次向 CPU 发送多个 IRQ。一个非常著名的 IRQ 控制器的例子是 Intel 8259 控制器链,它存在于所有 IBM-PC 兼容芯片组上,将两个控制器链接在一起,每个控制器提供 8 个输入引脚,在传统 IBM 上提供总共 16 个可用的 IRQ 信号引脚-个人电脑。
    • 基于消息的中断:通过将值写入为有关中断设备的信息、中断本身和向量信息保留的内存位置来发出信号。固件或内核软件为设备分配了一个位置。然后,设备使用特定于设备总线的仲裁协议生成 IRQ。提供基于消息的中断功能的总线的一个例子是 PCI 总线。
  • 软件中断:这是一个由 CPU 上运行的软件发出的信号,表明它需要内核的注意。这些类型的中断通常用于系统调用。在 x86 CPU 上,用于启动软件中断的指令是“INT”指令。由于 x86 CPU 可以使用 256 个可用中断向量中的任何一个来进行软件中断,因此内核通常会选择一个。例如,许多现代 Unix 在基于 x86 的平台上使用向量 0x80。