Linux是否会在所有内核上进入内核?

use*_*060 2 multithreading multicore linux-kernel

对于运行Linux 2.6.x的多核计算机,当线程进行系统调用时会发生什么?它是仅在运行该线程的核心上进入内核,还是在所有核心上都进入内核(对不起,如果这是一个新手问题).

一般接收中断时,这种行为(无论哪一种是正确的)是相同的吗?如果没有,有什么区别?

Nik*_*sov 5

只有执行系统调用的线程才能进入内核.Linux中的所有调度都是在线程粒度上完成的.至于中断 - 它们被路由到一个核心,即每个给定的硬件事件只中断一个处理器.然后可以手动将中断分配给特定的核心.这是通过掩码完成的/proc/irq/IRQ-NUMBER/smp_affinity.您可以看到哪些CPU接收了哪些硬件中断/proc/interrupts.