マルチコアプロセッサは、異なるコアを使用して、同じプロセスの複数のスレッドを同時に実行できることを理解しています。
複数のプロセスを同時に実行することもできますか(各コアは異なるプロセスを実行しています)?
マルチコアプロセッサは、異なるコアを使用して、同じプロセスの複数のスレッドを同時に実行できることを理解しています。
複数のプロセスを同時に実行することもできますか(各コアは異なるプロセスを実行しています)?
回答:
オペレーティングシステムに関する私の限られた知識から、すべてのプロセスには少なくとも1つのスレッドがあり、プロセス自体ではなく、これらのスレッドがスケジュールされると信じています。プロセスは単に、プログラムおよびプログラムが実行を設定したスレッドに関する情報を保持します。この方法では、シングルスレッドアプリケーションはマルチスレッドアプリケーションと同じように扱われますが、マルチスレッドアプリケーションはリソースをより効率的に使用できます。
たとえば、2つのスレッドを持つ2つのプロセスと1つのスレッド化されたアプリケーションがあり、すべてがデュアルコアプロセッサ(またはデュアルCPU、ここでは違いはない)で一生懸命働いているとします。
Process A
|_Thread A-1
|_Thread A-2
Process B
|_Thread B-1
|_Thread B-2
Process C
|_Thread C
各スレッドは、CPUのすべてのコアにわたってスケジュール可能であり、負荷はOSスケジューラーによって分散されます。
次に、プロセスBのプロセッサアフィニティを設定して1つのCPUに制限すると、そのプロセスのすべてのスレッドもそのCPUにバインドされ、他のCPUでは実行されません。同じことをプロセスCに実行しても、一度に1つのCPUでしか実行できないため、実際の変更はありません。