进程是否在不同的核心之间切换?

进程是否在不同的核心之间切换?

进程是否会在不同核心之间切换以提高性能?如果进程确实在核心之间切换,那么哪些组件是跨核心共享的?L1-L3 缓存、寄存器还是内存?

答案1

让我们想象一个繁忙的具有 2 个核心的单 CPU 系统,其负载接近 100%。

PID 为 1234 的进程只有一个线程(例如,控制台应用程序执行单线程音频压缩)。

对于这种进程,系统会尽力让线程在同一个核心上运行,以尽量减少缓存故障。但是,如果系统真的很忙,其他类似的进程也可能会尝试在同一个核心上运行。在这种情况下,原则上,您的单线程进程可能首先在核心 #1 上运行,然后在核心 #2 上运行,依此类推。

答案2

进程是否会在不同的核心之间切换以提高性能?

这取决于进程是否为多线程进程。进程本身基本上只是线程的“容器”,它需要至少有一个线程才能运行。每个线程都可以使用一个 CPU 核心,因此如果您的进程有 2 个线程(一个 GUI 线程和一个工作线程),它将在 2 个 CPU 核心上运行。

“进程是否会在不同的核心之间切换”这个问题并不完全正确,因为这种切换是由操作系统(OS)调度的,而不是由进程本身调度的!

答案3

CPU 之间的进程切换会影响性能,因为切换意味着将进程信息和寄存器存储在内存中,然后将其加载到另一个 CPU 上。

这些存储和加载命令是 CPU 上最慢的命令之一,尽管如果执行频率很低则不会引起注意。

该过程与进程终止其时间片并被操作系统暂停,然后以新的时间片重新启动的过程完全相同。

相关内容