2009-03-01 137 views
18

我有一个双核CPU如何处理中断的想法。我想知道如何在具有多个物理处理器的电路板上执行中断处理。双处理器机器如何处理中断?

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

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

+1

我现在是一个核心永远等待在读,一个线程等待看看。当读取完成后,似乎可能会更好地在同一个处理器上运行新唤醒的线程,因为数据仍然在该处理器上缓存。 – jeffD 2009-03-01 05:20:03

回答

8

在x86系统的每个CPU得到其自己的本地APIC(高级可编程中断控制器),其也被连接到彼此和到处理路由设备中断到本地APICS一个I/O APIC。

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

我想象一下,多核CPU对于每个核心都会有一个本地APIC,但我实在不确定这一点。

请参见以下链接了解详情:

0

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

然而this link使我相信大部分是由主处理器和/或第一核心可能处理。

Another link

3

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

+0

谢谢,Linux中SMP的链接很有趣。很高兴知道可以用这种方式修改服务器。 – jeffD 2009-03-01 05:05:06