
基本情報技術者試験基礎・応用
条件を読む・根拠を説明する
二つの資源の待合せ
条件を整理し、答えを選んでから解き方を確認しましょう。
PはL1を保持してL2を待ち、QはL2を保持してL1を待つ。ロックは排他的で、解放されるまで待つ。同じ種類の停止を予防する変更はどれか。
答え・解き方を読む
全処理がL1、L2の順に取得する
図で見る
相手が持つ資源を互いに待つ
Pが資源1を保持して資源2を待ち、Qが資源2を保持して資源1を待つ関係です。資源を同じ順序で取得する等の対策で循環待ちを防ぎます。
図は問題の関係を整理する模式図です。記号には各問題の数値を当てはめます。寸法・面積・時間の縮尺や、実施工の全条件は表していません。
考える順序
- 1各処理が相手の保持資源を待つ循環がある
- 2両方の取得順序を統一する
- 3片方を保持したまま逆順で待つ循環を防ぐ
選択肢ごとの理由
- 比較 · 一つ目のロック取得中だけ排他化し、その後は元の逆順を保つ
取得間の交錯が残り、それぞれ一つを保持する状態になり得ます。
- 比較 · 各ロック操作を原子的にすれば取得順の統一は不要
個々の操作が原子的でも複数ロック間の循環待ちは残ります。
- 比較 · 二つ目を待つ間、一つ目を保持して定期的に再試行する
最初のロックを保持し続けると相手も進めません。
- 正解 · 全処理がL1、L2の順に取得する
各処理が相手の保持資源を待つ循環がある。両方の取得順序を統一する。片方を保持したまま逆順で待つ循環を防ぐ。