【問164】ITパスポート 練習問題|資源の待ち合わせによる停止と対策
情報デザイン・データベース・ネットワーク 問14/25難易度C(難しい)
問題文
在庫管理システムで、処理Aが商品表を更新した後に倉庫表の更新を待ち、処理Bが倉庫表を更新した後に商品表の更新を待つ状態になり、どちらの処理も終わらなくなった。この現象と予防策の組合せとして最も適切なものはどれか。
- 1.ロールフォワードと呼ばれ、更新後の内容を記録したログを使って処理をやり直せば解消できる。
- 2.スラッシングと呼ばれ、主記憶の容量を増やして入替えの回数を減らせば起こりにくくなる。
- 3.デッドロックと呼ばれ、更新前の内容をログに記録しておくことで発生そのものを防止できる。
- 4.デッドロックと呼ばれ、資源を確保する順序をシステム全体で統一すると発生を防ぎやすい。
解説
正解は4。複数の処理が互いに相手の確保している資源の解放を待ち続け、どちらも先へ進めなくなる状態をデッドロックという。設問のように更新する対象の順序が処理ごとに逆になっていると発生しやすいため、表や資源を確保する順序をシステム全体であらかじめ統一しておくことが基本的な予防策になる。1は誤り。ロールフォワードは、バックアップと更新後ログを使って障害の直前の状態まで復旧する操作であり、待ち合わせの解消策ではない。2は誤り。スラッシングは主記憶と補助記憶の間でページの入替えが多発して処理が進まなくなる現象で、資源の待ち合わせとは原因が異なる。3は誤り。更新前の内容をログに残すのは復旧のための備えであって、待ち合わせそのものを防ぐ手段ではない。同時に更新されても矛盾が生じないよう排他制御でデータを守る一方、その副作用としてこの現象が起こり得る、という関係を押さえておきたい。