プロセスとスレッドの試験問題への適用
プロセス/スレッド問題では共有と分離を図にしてから、競合・通信・切替のどれが論点かを特定する。実装の細部より資源境界を読む。
この単元で学ぶこと
- アドレス空間分離の意味と役割を説明できる
- スレッド共有の意味と役割を説明できる
- 競合状態の意味と役割を説明できる
- 具体的な並行処理シナリオからプロセス/スレッドの設計上の論点を判断できる
本文解説
スレッド化は共有メモリで連携しやすいが、同期不備の影響も共有しやすい。プロセス分離は障害やアドレス空間を隔離しやすいが、通信にはIPCが必要になる。
アドレス空間分離 別プロセスのメモリ空間を分けて保護する考え方。 一方の誤書込みが他方へ直接及びにくい。
スレッド共有 同一プロセスのヒープやファイル記述子などを複数スレッドが共有する。 高速な共有と競合リスクが表裏一体。
競合状態 実行順序によって結果が変化し、意図しない値になる状態。 排他や原子的操作で保護する。
プロセス間通信 分離されたプロセス同士で情報を交換する手段。 メッセージや共有メモリ等を用途で選ぶ。
切替オーバヘッド 実行主体の変更に伴う状態保存・復元などのコスト。 過剰な切替は処理効率を下げ得る。
障害隔離ならプロセス分離、共有データ利用ならスレッド、共有更新の不具合なら競合、別プロセス連携ならIPCを優先して考える。
同じ在庫数を2スレッドが読み、どちらも1減らして書くと1回分の更新が失われ得る。共有変数への更新を同期する必要がある。
図解
重要ポイント
- アドレス空間分離: 別プロセスのメモリ空間を分けて保護する考え方。
- スレッド共有: 同一プロセスのヒープやファイル記述子などを複数スレッドが共有する。
- 競合状態: 実行順序によって結果が変化し、意図しない値になる状態。
- プロセス間通信: 分離されたプロセス同士で情報を交換する手段。
- 共有の利点を選ぶときは同時に競合の危険も確認する。
間違えやすい点
- スレッド化すれば自動的に高速になると断定しない。
- プロセス分離すれば通信不要になると考えない。
- 切替回数の増加を無視しない。
用語解説
- アドレス空間分離
- 別プロセスのメモリ空間を分けて保護する考え方。
- スレッド共有
- 同一プロセスのヒープやファイル記述子などを複数スレッドが共有する。
- 競合状態
- 実行順序によって結果が変化し、意図しない値になる状態。
- プロセス間通信
- 分離されたプロセス同士で情報を交換する手段。
- 切替オーバヘッド
- 実行主体の変更に伴う状態保存・復元などのコスト。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
確認問題の出題・採点や学習履歴の保存にはログインが必要です。