プロセスとスレッドの試験問題への適用

プロセス/スレッド問題では共有と分離を図にしてから、競合・通信・切替のどれが論点かを特定する。実装の細部より資源境界を読む。

この単元で学ぶこと

  • アドレス空間分離の意味と役割を説明できる
  • スレッド共有の意味と役割を説明できる
  • 競合状態の意味と役割を説明できる
  • 具体的な並行処理シナリオからプロセス/スレッドの設計上の論点を判断できる

本文解説

スレッド化は共有メモリで連携しやすいが、同期不備の影響も共有しやすい。プロセス分離は障害やアドレス空間を隔離しやすいが、通信にはIPCが必要になる。

アドレス空間分離 別プロセスのメモリ空間を分けて保護する考え方。 一方の誤書込みが他方へ直接及びにくい。

スレッド共有 同一プロセスのヒープやファイル記述子などを複数スレッドが共有する。 高速な共有と競合リスクが表裏一体。

競合状態 実行順序によって結果が変化し、意図しない値になる状態。 排他や原子的操作で保護する。

プロセス間通信 分離されたプロセス同士で情報を交換する手段。 メッセージや共有メモリ等を用途で選ぶ。

切替オーバヘッド 実行主体の変更に伴う状態保存・復元などのコスト。 過剰な切替は処理効率を下げ得る。

障害隔離ならプロセス分離、共有データ利用ならスレッド、共有更新の不具合なら競合、別プロセス連携ならIPCを優先して考える。

同じ在庫数を2スレッドが読み、どちらも1減らして書くと1回分の更新が失われ得る。共有変数への更新を同期する必要がある。

図解

並行処理の設計判断
分離・共有・競合・通信・切替の五つの観点でプロセスとスレッドを判断する。

重要ポイント

  • アドレス空間分離: 別プロセスのメモリ空間を分けて保護する考え方。
  • スレッド共有: 同一プロセスのヒープやファイル記述子などを複数スレッドが共有する。
  • 競合状態: 実行順序によって結果が変化し、意図しない値になる状態。
  • プロセス間通信: 分離されたプロセス同士で情報を交換する手段。
  • 共有の利点を選ぶときは同時に競合の危険も確認する。

間違えやすい点

  • スレッド化すれば自動的に高速になると断定しない。
  • プロセス分離すれば通信不要になると考えない。
  • 切替回数の増加を無視しない。

用語解説

アドレス空間分離
別プロセスのメモリ空間を分けて保護する考え方。
スレッド共有
同一プロセスのヒープやファイル記述子などを複数スレッドが共有する。
競合状態
実行順序によって結果が変化し、意図しない値になる状態。
プロセス間通信
分離されたプロセス同士で情報を交換する手段。
切替オーバヘッド
実行主体の変更に伴う状態保存・復元などのコスト。

関連教材

参考資料

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

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