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


9

我知道多核处理器可以使用其不同的内核同时运行同一进程的多个线程。
它是否可以同时运行多个进程(每个内核运行一个不同的进程)?

Answers:


14

就操作系统和应用程序而言,每个内核都是一个单独的处理器,并且与拥有多个处理器一样,遵循相同的相似性规则。

一个进程运行哪个处理器(是真正的,核心的还是超线程的),完全取决于操作系统的调度系统。正是此调度系统(受关联性设置影响)决定了进程应在何处以及何时运行。进程和线程可以根据调度程序的需要在处理器和内核之间随意切换。


7

根据我对操作系统的有限了解,我相信每个进程至少都有一个线程,并且调度这些线程的是这些线程,而不是进程本身。该进程仅保留有关程序及其已设置运行线程的信息。这样,单线程应用程序将获得与多线程应用程序相同的待遇,但是多线程应用程序可以更好地使用资源。

例如,假设我们有两个进程,每个进程有两个线程和一个线程应用程序,它们都在双核处理器(或双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上运行。


2

简短答案:

  1. 是的,只要操作系统支持它即可。
  2. 如今,所有操作系统都支持它。

进程和线程(如多线程)是OS级别的构造。一旦您在调度中获得足够低的级别,这些将消失,并且您只有一堆执行排队线程来获取执行时间。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.