![CPU 如何被 APIC 中断以及如何处理共享中断?](https://linux22.com/image/1533809/CPU%20%E5%A6%82%E4%BD%95%E8%A2%AB%20APIC%20%E4%B8%AD%E6%96%AD%E4%BB%A5%E5%8F%8A%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E5%85%B1%E4%BA%AB%E4%B8%AD%E6%96%AD%EF%BC%9F.png)
据我所知,每个PCI
设备都有 4 个中断引脚。主板上许多不同PCI
设备(内置或外部设备)的引脚IO-APIC
通过可编程中断路由器路由到(高级可编程中断控制器)。这就是拓扑结构。
据我所知,当发生中断时,IO-APIC
将发出信号,并将 INT 发送到 CPU,然后奇迹发生,CPU 开始执行 ISR(中断服务程序)。
那是什么魔法?
CPU 和之间应该发生什么通信IO-APIC
来处理 INT?
我的意思是 CPU 如何接收中断向量(它是一个特殊的总线周期吗?)以及如果被许多设备共享PCI
会发生什么(作为平台参考)?IRQ
x86 Linux
答案1
中断向量已存储在中断向量表中,因此 CPU 无需从外设获取它。如果中断与 IO-APIC 或类似设备相关联,这些设备可能会因不同原因引发中断,则中断处理程序将查询该设备以找出其引发中断的原因。这没有特殊的总线周期,它与 CPU 从其外设之一获取任何信息的方式相同。