マルチコアプロセッサは、異なるコアを使用して、同じプロセスの複数のスレッドを同時に実行できることを理解しています。
複数のプロセスを同時に実行することもできますか(各コアは異なるプロセスを実行します)?
オペレーティングシステムに関する私の限られた知識から、everyプロセスには少なくとも1つのスレッドがあり、プロセス自体ではなく、これらのスレッドがスケジュールされると思います。プロセスは、プログラムとそれが実行するように設定したスレッドに関する情報を保持するだけです。このようにして、シングルスレッドアプリケーションはマルチスレッドアプリケーションと同じ扱いを受けますが、マルチスレッドアプリケーションはリソースをより適切に使用できます。
たとえば、それぞれ2つのスレッドと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のプロセッサアフィニティを設定して1つのCPUに制限すると、そのプロセスのすべてのスレッドもそのCPUにバインドされ、他のCPUでは実行されなくなります。プロセスCに対して同じことを行っても、一度に1つのCPUでしか実行できないため、実際の変更は発生しません。
短い答え:
プロセスとスレッド(マルチスレッドの場合のように)はOSレベルの構造です。スケジューリングで十分に低いレベルになると、これらは消え、実行時間を取得するための実行キューのスレッドがたくさんあります。