🔖

マルチプロセスとマルチスレッド

2024/12/22に公開

マルチプロセスとマルチスレッド

マルチプロセス

プロセスとは、OS が管理する実行中のプログラムのことです。
OS は、プロセスごとにメモリ空間や CPU 時間など、システムリソースを割り当てます。

マルチプロセスは、複数のプロセスを同時に実行できます。

マルチプロセス処理は、以下の特徴を持ちます。

  • プロセスは、それぞれ独立してメモリ空間を持っている。
    • プロセス間でデータを共有するためには、IPC(Inter-Process Communication)を利用する必要がある。
  • プロセス間のデータのやり取りには、コストがかかる。
    • プロセス間のデータのやり取りには、シリアライズとデシリアライズが必要。
    • プロセス間のデータのやり取りには、システムコールが必要。
  • プロセスの管理(生成や破棄)には、コストがかかる。

マルチスレッド

スレッドとは、プロセス内で実行される実行単位のことです。
スレッドは、プロセス内で共有されたメモリ空間を持ちます。

マルチスレッドは、複数のスレッドを同時に実行できます。

マルチスレッド処理は、以下の特徴を持ちます。

  • マルチスレッドは、複数のスレッドを同時に実行できる。
  • スレッドは、プロセス内で共有されたメモリ空間を持っている。
    • スレッド間でデータを共有するためには、メモリ空間を共有するだけでよい。
    • ひとつのリソースを複数のスレッドで利用するため、競合状態の発生可能性がある。
    • 競合状態を避けるためには、ロックやセマフォなどを使った排他制御が必要。 (スレッドセーフなプログラムを作成する必要がある)
  • スレッドは、ファイルハンドルやその他のシステムリソースを共有できる。
  • スレッド間のデータのやり取りには、コストがかからない。
    • スレッド間のデータのやり取りには、シリアライズとデシリアライズが不要。

Discussion