CPU如何决定由哪个处理器核心处理硬件中断?

3
2个回答

7
在操作系统介入之前,只有一个CPU在运行(其余的CPU都处于“等待启动IPI”状态,直到操作系统启动它们),中断控制器(PIC芯片或IO APIC)被配置为将IRQ发送到正在运行的唯一CPU。
注意:对于BIOS,IO APIC也是禁用的,直到操作系统启用/配置它,而固件使用旧的PIC芯片(这些芯片实际上无法用于决定将IRQ发送到哪个CPU)。对于UEFI,固件大多不使用IRQ(其设备驱动程序轮询设备)。
在操作系统介入后(而不是之前),操作系统配置IO APIC/s和可能的MSI(消息标志中断)和可能的IOMMU来告诉硬件将每个IRQ发送到哪个CPU。
还有一种特殊情况(“发送到最低优先级CPU”功能),芯片组会决定将IRQ发送到哪个CPU(基于本地APIC或CR8中的“任务优先级”软件设置)。不幸的是,该功能可能不受芯片组支持,即使支持也可能不被操作系统使用。

5
这是由I/O-APIC完成的。APIC代表高级可编程中断控制器。来自OSDev WiKi的一句话引用:
此外,还有一个I/O APIC(例如intel 82093AA)是芯片组的一部分,提供多处理器中断管理,将静态和动态对称中断分布跨越所有处理器。在具有多个I/O子系统的系统中,每个子系统都可以拥有自己的一组中断。
可以在这里找到一个过时的规范。它描述了其功能的一部分 提供多处理器中断管理 - 动态中断分发 - 将中断路由到最低优先级处理器 - 软件可编程控制中断输入 - 卸载与中断相关的流量从内存总线

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接