プロセスとスレッドの関係
プロセスとスレッド
並列処理や並行処理を扱っているときに、プロセス、スレッドという言葉を聞くことがあると思います。これらを混同していると並列処理、並行処理への理解が全く進まないので整理します。本記事を読むと次の言葉が何を指しているのか理解できます!
- 並列処理
- 並行処理
- マルチプロセス
- マルチプロセッシング
- マルチスレッド
- マルチスレッディング
プロセスの定義
「プロセスは独立したメモリ空間を持つプログラムの実行単位で、プロセス間でメモリを共有しません。」
この定義についてマクドナルドの注文処理を例に説明します。
プロセスと並列処理の例 - マクドナルドの注文処理編
-
1プロセスの例:店員が1人の場合
- 店員1人が順番にお客さん10人の注文を処理します。
- 全てのタスクを1人で処理するため、並列処理はされていません。
-
2プロセスの例:店員が2人の場合
- 2人の店員が、それぞれ5人分の注文を並列に処理します。
- プロセス(店員)間で注文の情報は共有されないため、それぞれが独立して作業します。
-
並列化の効果
- 複数のプロセス(マルチプロセス)で注文を処理することで、全体の処理時間が短縮されます。
スレッドとは
「スレッドは、同じプロセス内でメモリを共有する軽量な実行単位です。スレッドを使った並行処理では、スレッドが同じプロセス内で交互に実行され、メモリを共有しながらタスクを切り替えて進行します。」
スレッドとプロセスの関係は次の通りです。
この定義について夏休みの宿題を例に説明します。宿題は以下の3つとします。
- 計算ドリル
- 漢字ドリル
- 読書感想文
スレッドと並行処理の例 - 夏休みの宿題編
-
1スレッドの例:宿題は1種類ずつ終わらせる
- 計算ドリルが終わったら、漢字ドリルに取り組む。漢字ドリルが終わったら読書感想文に取り組む。のように順番に宿題を終わらせていきます。
- 並行処理はされていません。
- 計算ドリルが終わったら、漢字ドリルに取り組む。漢字ドリルが終わったら読書感想文に取り組む。のように順番に宿題を終わらせていきます。
-
2スレッドの例:計算ドリルと漢字ドリルを並行して進める
- 計算ドリル3ページと漢字ドリル3ページを1日に並行して行い、交互に作業を進めます。
- 宿題の進捗状況を把握(メモリを共有)しながら、宿題(タスク)を切り替えて進めています。
- 計算ドリル3ページと漢字ドリル3ページを1日に並行して行い、交互に作業を進めます。
-
3スレッドの例:計算ドリルと漢字ドリル、読書感想文を並行して進める
- 計算ドリル3ページ、漢字ドリル3ページ、読書感想文3行を1日で並行して進めます。
- 宿題の進捗状況を把握(メモリを共有)しながら、宿題(タスク)を切り替えて進めています。
- 計算ドリル3ページ、漢字ドリル3ページ、読書感想文3行を1日で並行して進めます。
まとめ
-
プロセス
- 処理の実行単位である
- メモリを共有しない
-
スレッド
- プロセス内の実行単位である
- メモリを共有する
-
並列処理
- マルチプロセス
- マルチプロセッシング
-
並行処理
- マルチスレッド
- マルチスレッディング