コンピュータCPUとマルチスレッド
プロセスとスレッド:
プロセスはスレッドを含み、プロセスは複数のスレッドを含みます。
スレッドは CPU のスケジューリングと割り当ての基本単位であり、プロセスはオペレーティングシステムによるリソース割り当ての最小単位です。
シングルコアCPU:
マルチプロセッシングの実装は、オペレーティングシステムのプロセススケジューリングアルゴリズムに依存しています。例えば、3つの実行中のプログラムがある場合、オペレーティングシステムは、シングルコアのCPUにこれらのプロセスを実行するために交代させます。
マルチスレッドとは、CPUリソースを最大限に活用することです。スレッドの切り替えに時間がかかるため、2つのスレッドを持つプロセスは、1つのスレッドを2回持つプロセスよりも実行に少し時間がかかるかもしれません。つまり、マルチスレッドの使用は、プログラムの速度を上げるのではなく、速度を低下させるかもしれませんが、ユーザーにとっては、ユーザーの応答時間を短縮することができます。
マルチコアCPU:
マルチコアCPUとは何ですか? マルチコアCPUは、複数の完全なコンピューティング・エンジンを組み込んだプロセッサです。
マルチコアCPUとシングルコアCPUは並列処理ではなく同時処理です。
しかし、マルチコアCPUは、各コアが独立してスレッドを実行することができますので、マルチコアCPUは本当にマルチスレッド並列処理を実現することができます。例えば、クアッドコアは、CPUのスケジューリングを待機するスレッド567がある場合、コア1234スレッド1234に割り当てることができます。スレッド1234は並列に属し、コア1がスレッド1の実行を停止してスレッド5を実行する場合、そのスレッド15は並列に属します。
JVMマルチスレッドとマルチコアCPU:
Javaはマルチスレッド機構を通じて、複数のタスクが同時に実行することができます処理、すべてのスレッドは、JVMのメモリ領域のメインメモリを共有し、各スレッドは、独自の独立した作業メモリを持って、スレッドがメモリ領域と相互作用するとき、メインメモリから作業メモリにコピーされたデータは、スレッドの処理に引き渡されます。
Java仮想マシンのマルチスレッドは、スレッドの回転切り替えとプロセッサの実行時間の割り当てによって実現されるため、プロセッサは任意の時点で、スレッド内の1つの命令しか実行しません。そのため、マルチコアCPUの場合、複数のスレッドが複数のコアにスケジューリングされます。