18

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

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

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

4

4 回答 4

7

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

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

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

有关更多详细信息,请参阅这些链接:

于 2009-03-01T04:25:18.190 回答
3

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

于 2009-03-01T04:28:00.510 回答
1

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

多核/多 CPU 机器中的中断如何工作

于 2009-03-01T04:30:27.867 回答
0

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

然而,这个链接让我相信大多数可能是由主处理器和/或第一个核心处理的。

另一个链接

于 2009-03-01T04:17:31.190 回答