从操作系统的角度来看,哪个处理器将在muticore系统中执行硬件中断?及其答案似乎集中在这个问题上,但是在操作系统介入之前,CPU是如何决定向哪个核心交付硬件中断的呢?
发布于 2019-09-23 04:44:14
在操作系统介入之前,CPU是如何决定将硬件中断交付给哪个核心的?
在操作系统介入之前;只有一个CPU在运行(其余CPU处于“等待启动IPI”状态,直到操作系统启动为止),并配置中断控制器(PIC芯片或IO APIC),以便将IRQ发送到正在运行的唯一CPU。
注意:对于BIOS;IO也是禁用的,直到操作系统启用/配置为止,固件使用旧的PIC芯片(实际上不能用来决定向哪个CPU发送IRQ )。对于UEFI,固件大多不使用IRQ(其设备驱动程序轮询设备)。
在涉及到操作系统之后(而不是以前);操作系统配置IO、APIC/s和MSI (消息信号中断),或者IOMMU来告诉硬件将每个IRQ发送到哪个CPU。
有一种特殊情况(“发送到最低优先级的CPU”功能),其中芯片组决定将IRQ发送到哪个CPU (基于本地APIC或CR8中的软件设置“任务优先级”)。不幸的是,这个特性可能不被芯片组所支持,即使它被支持,也可能不被操作系统所使用。
发布于 2019-09-23 00:22:30
这是由I/O-APIC完成的。APIC代表高级可编程中断控制器。引用OSDev WiKi的话
此外,还有一个I/O APIC (例如英特尔82093AA),它是芯片组的一部分,提供多处理器中断管理,包括所有处理器之间的静态和动态对称中断分配。在具有多个I/O子系统的系统中,每个子系统可以有自己的一组中断。
到规范可以在这里找到的过时链接。它将其部分功能描述为
提供多处理器中断管理 -动态中断分配-将中断路由到最低优先级处理器 -中断输入的软件可编程控制 -从内存总线断开与中断相关的通信量
https://stackoverflow.com/questions/58054305
复制相似问题