多核处理器可以同时运行多个进程吗?

多核处理器可以同时运行多个进程吗?

我理解多核处理器可以使用不同的核心同时运行同一进程的多个线程。
它也可以同时运行多个进程(每个核心运行不同的进程)吗?

答案1

对于操作系统和应用程序而言,每个核心都是一个单独的处理器,并且受相同的亲和力规则具有多个处理器。

进程在哪个处理器(真实处理器、核心处理器或超线程处理器)上运行完全取决于操作系统的调度系统。正是这个调度系统(受亲和力设置)决定进程应在何时何地运行。进程和线程可以根据调度程序的需要随意在处理器和核心之间切换。

答案2

从我对操作系统的有限了解来看,我认为每一个进程至少有一个线程,并且调度的是这些线程,而不是进程本身。进程只保存有关程序及其已设置为运行的线程的信息。这样,单线程应用程序与多线程应用程序获得相同的处理,但多线程应用程序可以更好地利用资源。

例如,假设我们有两个进程,每个进程有两个线程,还有一个单线程应用程序,它们都在双核处理器(或双 CPU,这里没有区别)上努力工作

 Process A
    |_Thread A-1
    |_Thread A-2

 Process B
    |_Thread B-1
    |_Thread B-2

 Process C
    |_Thread C

每个线程都可以在 CPU 的所有核心上调度,并且负载由 OS 调度程序平衡。

如果我们接下来为进程 B 设置处理器亲和性,将其限制在一个 CPU 上,那么该进程的所有线程也将绑定到该 CPU,并且不会在任何其他 CPU 上运行。对进程 C 执行相同操作不会导致任何实际变化,因为它一次只能在一个 CPU 上运行。

答案3

简短回答:

  1. 是的,只要操作系统支持。
  2. 现在所有操作系统都支持它。

进程和线程(如多线程)是操作系统级别的构造。一旦调度级别足够低,这些就会消失,只有一堆执行线程在排队等待执行时间。

相关内容