it-swarm-ja.com

プロセスは異なるコア間で切り替わりますか?

プロセスは、パフォーマンスを向上させるために異なるコア間で切り替わりますか?プロセスがコア間でジャンプする場合、どのコンポーネントがコア間で共有されますか? L1-L3キャッシュ、レジスタ、またはメモリ?

5
FunctionBlock

プロセスはパフォーマンスを向上させるために異なるコア間で切り替わりますか?

これは、プロセスがマルチスレッドプロセスであるかどうかによって異なります。プロセス自体は基本的にスレッドの単なる「コンテナ」であり、実行するには少なくとも1つ必要です。各スレッドはCPUのコアを使用できるため、プロセスに2つのスレッド(GUIスレッドと作業スレッド)がある場合、プロセスは2コアのCPUで実行されます。

「異なるコア間でプロセスが切り替わるか」という質問は、そのような切り替えがプロセス自体ではなくオペレーティングシステム(OS)によってスケジュールされているため、正確には正しくありません。

1
duDE

負荷が100%に近づいている、2コアシステムのビジーなシングルCPUを想像してみましょう。

PID 1234のプロセスには、スレッドが1つしかありません(たとえば、コンソールアプリケーションがモノスレッドオーディオ圧縮を実行します)。

この種のプロセスでは、システムはキャッシュ障害を最小限に抑えるために、同じコアでスレッドを実行するために最善を尽くします。ただし、システムが非常にビジーである場合は、同様の他のプロセスも同じコアで実行しようとする可能性があります。この場合、原則として、シングルスレッドプロセスは最初にコア#1で実行され、次にコア#2で実行されます。

1
Strangelovian

CPU間のプロセス切り替えは、プロセス情報とレジスタをメモリに保存してから他のCPUにロードすることを意味するため、パフォーマンスが低下します。

これらのstoreおよびloadコマンドは、CPUで最も遅いコマンドのひとつですが、実行頻度が非常に低い場合は気付かれません。

このプロセスは、プロセスがタイムスライスを終了し、オペレーティングシステムによって一時停止されてから、新しいタイムスライスで再起動される場合とまったく同じです。

0
harrymc