プロセスとスレッドを理解する

OSは実行中プログラムを管理単位へ分けて資源を割り当てる。プロセスとスレッドの違いを、アドレス空間・共有資源・切替コスト・障害影響の観点で理解する。

この単元で学ぶこと

  • プロセスの意味と役割を説明できる
  • スレッドの意味と役割を説明できる
  • コンテキスト切替の意味と役割を説明できる
  • プロセスとスレッドの共有範囲と独立性を比較できる

本文解説

プロセスは独立した仮想アドレス空間などを持つ実行単位で、スレッドは同一プロセス内でコードやデータを共有しながら独立した実行経路を持つ。共有が多いほど連携しやすい一方、同期が必要になる。

プロセス 実行中プログラムをOSが管理する単位で、独立した仮想アドレス空間や資源を持つ。 他プロセスとのデータ交換にはIPCなど明示的な仕組みを使う。

スレッド プロセス内の実行の流れで、同一プロセスのコードやデータを共有する。 各スレッドはスタックや実行状態を持つ。

コンテキスト切替 CPUで実行するプロセスやスレッドを切り替えるため実行状態を退避・復元する処理。 切替そのものにもオーバヘッドがある。

共有資源 複数スレッドが同じ変数やファイルなどへアクセスできる状態。 競合を避けるため排他制御が必要になることがある。

IPC 独立したプロセス間でデータや同期情報を交換する仕組みの総称。 パイプ、メッセージ、共有メモリなど方式がある。

アドレス空間を共有するか、どの資源が独立かを軸に読む。同一プロセス内スレッドはデータ共有が容易だが、競合が起こるため同期を考える。

同じプロセスの2スレッドはヒープ上の同じ変数を共有できるが、それぞれ別のスタックと実行位置を持つ。

図解

プロセスとスレッドの共有範囲
プロセス間は分離され、同一プロセス内のスレッドはコード・データなどを共有する。

重要ポイント

  • プロセス: 実行中プログラムをOSが管理する単位で、独立した仮想アドレス空間や資源を持つ。
  • スレッド: プロセス内の実行の流れで、同一プロセスのコードやデータを共有する。
  • コンテキスト切替: CPUで実行するプロセスやスレッドを切り替えるため実行状態を退避・復元する処理。
  • 共有資源: 複数スレッドが同じ変数やファイルなどへアクセスできる状態。
  • プロセスは分離、スレッドは同一プロセス内で多くを共有する。

間違えやすい点

  • スレッド同士が完全に独立したアドレス空間を持つと誤解しない。
  • 共有できることと同時更新が安全であることを同一視しない。
  • コンテキスト切替にコストがないと考えない。

用語解説

プロセス
実行中プログラムをOSが管理する単位で、独立した仮想アドレス空間や資源を持つ。
スレッド
プロセス内の実行の流れで、同一プロセスのコードやデータを共有する。
コンテキスト切替
CPUで実行するプロセスやスレッドを切り替えるため実行状態を退避・復元する処理。
共有資源
複数スレッドが同じ変数やファイルなどへアクセスできる状態。
IPC
独立したプロセス間でデータや同期情報を交換する仕組みの総称。

関連教材

参考資料

教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。

確認問題の出題・採点や学習履歴の保存にはログインが必要です。