一般来说,硬件中断需要立即处理,至少要确认它并做一些第一级处理。据我了解,这不是计划的活动。请纠正我。哪个处理器会在多核系统中执行硬件中断
所以问题是如何选择一个实际上可以执行这个硬件中断处理程序的处理器?
一个可用于Linux和/或BSD系统
一般来说,硬件中断需要立即处理,至少要确认它并做一些第一级处理。据我了解,这不是计划的活动。请纠正我。哪个处理器会在多核系统中执行硬件中断
所以问题是如何选择一个实际上可以执行这个硬件中断处理程序的处理器?
一个可用于Linux和/或BSD系统
这确实取决于操作系统实现回答这个问题。
有的将所有中断分配给单个处理器,有的则将中断处理分配给部分或全部处理器。
在NUMA系统上,操作系统应该试图将中断处理分配给“附近”处理器。
你必须阅读你感兴趣的操作系统(和版本)的来源,找出它的用途。
感谢您的回答+1。希望确定你的答案是关于硬件中断,而不是下半部分的处理,这实际上是一个计划的活动。 –
我没有区分中断处理程序的“下半部分”和硬件中断。但是一些硬件系统可能会将硬件中断连接到处理器的一个子集,甚至是单个处理器,这使得操作系统更加有趣。 (请记住,在IBM-PC/AT系统架构中,世界上比X86更多)。 –
它部分取决于操作系统实现,更强烈地取决于PIC,PIR等的硬件实现。 – 0andriy
一般来说,这取决于多核处理器和操作系统提供的功能。在使用多核处理器时,您可能需要按照您的要求配置中断的相关性。
在linux
的情况下,/proc
文件系统提供了显示/配置中断关联的规定。
1)各自的IRQ文件smp_affinity
保持了能够被用于配置IRQ要由相应的芯在多核系统中提供服务的位掩码:
的/ proc/IRQ/
'irq_number'
/smp_affinity
echo 2 > /proc/irq/12/smp_affinity -> Configures the affinity of IRQ 12 to CPU 1
echo 4 > /proc/irq/14/smp_affinity -> Configures the affinity of IRQ 14 to CPU 2
2)文件smp_affinity_list
有助于通过避免位掩码的方法配置的范围CPU为特定的IRQ的配置芯:
的/ proc/IRQ/
'irq_number'
/smp_affinity_list
cat /proc/irq/12/smp_affinity_list -> Configures the affinity of IRQ 12 to CPU cores 0 to 3
3)亦Linux提供称为irqbalance
一个中断负载均衡守护进程可以在中断的分配帮助多个处理器内核,以优化性能。该守护进程可能在某些系统中默认启用,因此如果您想手动配置中断的关联性,则应该禁用此守护程序,否则这可能会在每次重置后覆盖配置的关联性。
AFAIK主线Linux仅支持SMP对称多处理器硬件,这意味着任何处理器都可以处理中断。我已经看到UNIX移植到非对称硬件,即有专门用于I/O和中断的处理器。顺便说一句处理器不会*“执行中断”*。它可以*服务*中断,即执行中断服务程序ISR。 – sawdust
等待,UP也支持。 – 0andriy