TAKEO

TAKEO

プロセスとスレッドの関係

プロセスとスレッド

並列処理や並行処理を扱っているときに、プロセス、スレッドという言葉を聞くことがあると思います。これらを混同していると並列処理、並行処理への理解が全く進まないので整理します。本記事を読むと次の言葉が何を指しているのか理解できます!

  • 並列処理
  • 並行処理
  • マルチプロセス
  • マルチプロセッシング
  • マルチスレッド
  • マルチスレッディング

プロセスの定義

「プロセスは独立したメモリ空間を持つプログラムの実行単位で、プロセス間でメモリを共有しません。」

この定義についてマクドナルドの注文処理を例に説明します。

プロセスと並列処理の例 - マクドナルドの注文処理編

  • 1プロセスの例:店員が1人の場合

    • 店員1人が順番にお客さん10人の注文を処理します。
    • 全てのタスクを1人で処理するため、並列処理はされていません。
  • 2プロセスの例:店員が2人の場合

    • 2人の店員が、それぞれ5人分の注文を並列に処理します。
    • プロセス(店員)間で注文の情報は共有されないため、それぞれが独立して作業します。
  • 並列化の効果

    • 複数のプロセス(マルチプロセス)で注文を処理することで、全体の処理時間が短縮されます。

スレッドとは

「スレッドは、同じプロセス内でメモリを共有する軽量な実行単位です。スレッドを使った並行処理では、スレッドが同じプロセス内で交互に実行され、メモリを共有しながらタスクを切り替えて進行します。」

スレッドとプロセスの関係は次の通りです。

1プロセス3スレッドの例

この定義について夏休みの宿題を例に説明します。宿題は以下の3つとします。

  • 計算ドリル
  • 漢字ドリル
  • 読書感想文

スレッドと並行処理の例 - 夏休みの宿題編

  • 1スレッドの例:宿題は1種類ずつ終わらせる

    • 計算ドリルが終わったら、漢字ドリルに取り組む。漢字ドリルが終わったら読書感想文に取り組む。のように順番に宿題を終わらせていきます。
      • 並行処理はされていません。
  • 2スレッドの例:計算ドリルと漢字ドリルを並行して進める

    • 計算ドリル3ページと漢字ドリル3ページを1日に並行して行い、交互に作業を進めます。
      • 宿題の進捗状況を把握(メモリを共有)しながら、宿題(タスク)を切り替えて進めています。
  • 3スレッドの例:計算ドリルと漢字ドリル、読書感想文を並行して進める

    • 計算ドリル3ページ、漢字ドリル3ページ、読書感想文3行を1日で並行して進めます。
      • 宿題の進捗状況を把握(メモリを共有)しながら、宿題(タスク)を切り替えて進めています。

まとめ

  • プロセス

    • 処理の実行単位である
    • メモリを共有しない
  • スレッド

    • プロセス内の実行単位である
    • メモリを共有する
  • 並列処理

    • マルチプロセス
    • マルチプロセッシング
  • 並行処理

    • マルチスレッド
    • マルチスレッディング