在单核CPU上,每个进程都在操作系统中运行,CPU会在不同的进程间跳转以最大程度地利用自身。一个进程可以有多个线程,在这种情况下,当CPU运行在相应的进程上时,它会依次运行这些线程。
现在,在多核CPU上:
多个核心是否会同时运行每个进程,或者在某一特定时间点,多个核心是否可以分别在不同的进程中运行?例如,您运行了一个包含两个线程的程序A。双核CPU能否同时运行该程序的两个线程?如果我们使用类似 OpenMP 之类的东西,我认为答案应该是肯定的。但是,在运行此OpenMP嵌入式进程时,其中一个核心是否可以简单地切换到其他进程?
对于为单核设计的程序,在运行到100%时,为什么每个核心的CPU利用率分布不均?(例如80%和20%的双核CPU。在这种情况下,所有核心的利用率百分比总和始终为100%。)是不是每个核心都试图通过以某种方式运行每个进程的每个线程来互相帮助?