🔖
マルチプロセスとマルチスレッド
マルチプロセスとマルチスレッド
マルチプロセス
プロセスとは、OS が管理する実行中のプログラムのことです。
OS は、プロセスごとにメモリ空間や CPU 時間など、システムリソースを割り当てます。
マルチプロセスは、複数のプロセスを同時に実行できます。
マルチプロセス処理は、以下の特徴を持ちます。
- プロセスは、それぞれ独立してメモリ空間を持っている。
- プロセス間でデータを共有するためには、IPC(Inter-Process Communication)を利用する必要がある。
- プロセス間のデータのやり取りには、コストがかかる。
- プロセス間のデータのやり取りには、シリアライズとデシリアライズが必要。
- プロセス間のデータのやり取りには、システムコールが必要。
- プロセスの管理(生成や破棄)には、コストがかかる。
マルチスレッド
スレッドとは、プロセス内で実行される実行単位のことです。
スレッドは、プロセス内で共有されたメモリ空間を持ちます。
マルチスレッドは、複数のスレッドを同時に実行できます。
マルチスレッド処理は、以下の特徴を持ちます。
- マルチスレッドは、複数のスレッドを同時に実行できる。
- スレッドは、プロセス内で共有されたメモリ空間を持っている。
- スレッド間でデータを共有するためには、メモリ空間を共有するだけでよい。
- ひとつのリソースを複数のスレッドで利用するため、競合状態の発生可能性がある。
- 競合状態を避けるためには、ロックやセマフォなどを使った排他制御が必要。 (スレッドセーフなプログラムを作成する必要がある)
- スレッドは、ファイルハンドルやその他のシステムリソースを共有できる。
- スレッド間のデータのやり取りには、コストがかからない。
- スレッド間のデータのやり取りには、シリアライズとデシリアライズが不要。
Discussion