インテル®コンパイラー OpenMP*入門 デュアルコア・マルチコア対応アプリケーション開発@ <<  4  >> マルチプロセス/シングルスレッド マルチプロセス/マルチスレッド 一方、スレッドはプロセス内に 1 つ以上生成されたもので、現在の OS は、ほとんどこのスレッドに対して CPU へ のスケジューリングを行います。プロセス内で生成される複数のスレッドが、マルチスレッドとなります。マルチスレッ ドは、マルチプロセスとは違ってプロセス内の仮想メモリー空間といったリソースやコンテキストを共有し、固有のス タックとプログラムカウンター(PC)を個別に持つことになります。 個々のプロセスが固有の仮想空間上で動作するプロセスと異なり、このメモリー空間を共有することで、スレッドは 並列処理を行う上で非常に効率的な実行を可能としています。メモリー空間の共有により、スレッド間でのデータの やり取りは直接アクセスが可能となり、OS を介した通信のようなオーバーヘッドの大きなオペレーションを必要としま せん。同時に、スレッドの生成や切り替えはプロセスの場合と比較して高速であり、システムのリソースへのインパク トも非常に小さくなります。このようなスレッドの特性を最大限に活用することで、効率のよい並列処理を行うのが、 マルチスレッド・プログラミングです。 プロセス間通信 プログラムカウンター (スレッド) スタック データ プロセスA テキスト スタック データ プロセスB テキスト オペレーティング・ システム プロセス間通信 プログラムカウンター (スレッド) スタック データ プロセスA テキスト データ プロセスB テキスト オペレーティング・ システム スタック スタック スタック