プロセスとスレッドを理解する
OSは実行中プログラムを管理単位へ分けて資源を割り当てる。プロセスとスレッドの違いを、アドレス空間・共有資源・切替コスト・障害影響の観点で理解する。
この単元で学ぶこと
- プロセスの意味と役割を説明できる
- スレッドの意味と役割を説明できる
- コンテキスト切替の意味と役割を説明できる
- プロセスとスレッドの共有範囲と独立性を比較できる
本文解説
プロセスは独立した仮想アドレス空間などを持つ実行単位で、スレッドは同一プロセス内でコードやデータを共有しながら独立した実行経路を持つ。共有が多いほど連携しやすい一方、同期が必要になる。
プロセス 実行中プログラムをOSが管理する単位で、独立した仮想アドレス空間や資源を持つ。 他プロセスとのデータ交換にはIPCなど明示的な仕組みを使う。
スレッド プロセス内の実行の流れで、同一プロセスのコードやデータを共有する。 各スレッドはスタックや実行状態を持つ。
コンテキスト切替 CPUで実行するプロセスやスレッドを切り替えるため実行状態を退避・復元する処理。 切替そのものにもオーバヘッドがある。
共有資源 複数スレッドが同じ変数やファイルなどへアクセスできる状態。 競合を避けるため排他制御が必要になることがある。
IPC 独立したプロセス間でデータや同期情報を交換する仕組みの総称。 パイプ、メッセージ、共有メモリなど方式がある。
アドレス空間を共有するか、どの資源が独立かを軸に読む。同一プロセス内スレッドはデータ共有が容易だが、競合が起こるため同期を考える。
同じプロセスの2スレッドはヒープ上の同じ変数を共有できるが、それぞれ別のスタックと実行位置を持つ。
図解
重要ポイント
- プロセス: 実行中プログラムをOSが管理する単位で、独立した仮想アドレス空間や資源を持つ。
- スレッド: プロセス内の実行の流れで、同一プロセスのコードやデータを共有する。
- コンテキスト切替: CPUで実行するプロセスやスレッドを切り替えるため実行状態を退避・復元する処理。
- 共有資源: 複数スレッドが同じ変数やファイルなどへアクセスできる状態。
- プロセスは分離、スレッドは同一プロセス内で多くを共有する。
間違えやすい点
- スレッド同士が完全に独立したアドレス空間を持つと誤解しない。
- 共有できることと同時更新が安全であることを同一視しない。
- コンテキスト切替にコストがないと考えない。
用語解説
- プロセス
- 実行中プログラムをOSが管理する単位で、独立した仮想アドレス空間や資源を持つ。
- スレッド
- プロセス内の実行の流れで、同一プロセスのコードやデータを共有する。
- コンテキスト切替
- CPUで実行するプロセスやスレッドを切り替えるため実行状態を退避・復元する処理。
- 共有資源
- 複数スレッドが同じ変数やファイルなどへアクセスできる状態。
- IPC
- 独立したプロセス間でデータや同期情報を交換する仕組みの総称。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
確認問題の出題・採点や学習履歴の保存にはログインが必要です。