我知道多核处理器可以使用其不同的内核同时运行同一进程的多个线程。
它是否可以同时运行多个进程(每个内核运行一个不同的进程)?
我知道多核处理器可以使用其不同的内核同时运行同一进程的多个线程。
它是否可以同时运行多个进程(每个内核运行一个不同的进程)?
Answers:
根据我对操作系统的有限了解,我相信每个进程至少都有一个线程,并且调度这些线程的是这些线程,而不是进程本身。该进程仅保留有关程序及其已设置运行线程的信息。这样,单线程应用程序将获得与多线程应用程序相同的待遇,但是多线程应用程序可以更好地使用资源。
例如,假设我们有两个进程,每个进程有两个线程和一个线程应用程序,它们都在双核处理器(或双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上运行。