【问题标题】:How are interrupts handled by dual processor machines?双处理器机器如何处理中断?
【发布时间】:2010-10-10 14:22:02
【问题描述】:

我知道双核 CPU 如何处理中断。我想知道如何在具有多个物理处理器的板上实现中断处理。

任何中断责任是否由物理板的配置决定?每个处理器都必须能够处理某些类型的中断,例如磁盘 I/O。除非有一些电路来管理和分配中断到适当的处理器?我的猜测是该方案必须是处理器中立的,以便任何处理器和内核都可以运行中断处理程序。

如果一个内核正在等待磁盘读取,那么当磁盘准备好时,该内核是否会运行中断处理程序?

【问题讨论】:

  • 我现在看到一个核心从不等待读取,一个线程等待。但是,当读取完成后,似乎最好在与以前相同的处理器上运行新唤醒的线程,因为数据仍有可能缓存在该处理器上。

标签: hardware cpu multicore interrupt cpu-architecture


【解决方案1】:

我会说这取决于硬件制造商......

但是this link 让我相信大多数可能由主处理器和/或第一个内核处理。

Another link

【讨论】:

    【解决方案2】:

    在 x86 系统上,每个 CPU 都有自己的本地 APIC(高级可编程中断控制器),它们也相互连接,并连接到处理路由设备中断到本地 APIC 的 I/O APIC。

    操作系统可以对 APIC 进行编程,以确定哪些中断被路由到哪些 CPU(或让 APIC 做出决定)。

    我认为多核 CPU 的每个内核都有一个本地 APIC,但老实说我对此并不确定。

    查看这些链接了解更多详情:

    【讨论】:

      【解决方案3】:

      您感兴趣的是 SMP 处理器关联。 Here 是一篇关于如何在 Linux 中处理它的优秀文章。 Advanced Programmable Interrupt Controller (APIC) 是您在现代系统中管理它的方式。基本上,除非您有一个使用此接口正确设置的操作系统,否则默认值将全部转到处理器 0。此外,您不一定希望发出命令的内核等待特定的中断。您希望负载较少的核心接收它。

      【讨论】:

      • 谢谢,Linux 中 SMP 的链接很有趣。很高兴知道可以通过这种方式修改服务器。
      【解决方案4】:

      我之前已经问过这个问题了。也许它可以为您提供一些见解:)

      how do interrupts in multicore/multicpu machines work

      【讨论】:

      • 关于如何将可编程磁盘 I/O 分解为扇区 I/O 操作和相关中断的有用信息。
      猜你喜欢
      • 1970-01-01
      • 2018-11-19
      • 2012-03-11
      • 1970-01-01
      • 2017-10-17
      • 2012-09-21
      • 1970-01-01
      • 1970-01-01
      • 2018-10-22
      相关资源
      最近更新 更多