問題
2 相ロッキングプロトコルに従ってロックを獲得するトランザクション A、B を図のように同時に実行した場合に、デッドロックが発生しないデータ処理順序はどれか。ここで、read と update の位置は、アプリケーションプログラムでの命令発行時点を表す。また、データ W への read は共有ロックを要求し、データ X、Y、Z への update は各データへの専有ロックを要求する。

選択肢
- 1①read W ②update Y ③update X ④update Z
- 2①read W ②update Y ③update Z ④update X
- 3①update X ②read W ③update Y ④update Z
- 4①update Y ②update Z ③update X ④read W
正解
3. ①update X ②read W ③update Y ④update Z
詳しい解説を見る解説を閉じる
解説
トランザクション A は read W → update X → update Y → update Z の順にロックを取得し、2 相ロックなのでコミットまで保持し続けます。デッドロックは、A と B が互いに相手の保持するロックを待ち合う循環待ちが起きると発生します。ア・イ・エの順序では、ある時点で A が Y を待ち B が X を待つ(あるいはその逆)という相互待ちが生じ、デッドロックになります。ウ(update X → read W → update Y → update Z)の場合は、B が先に X を確保して処理を進め、A が X を待つ間に B が完了してロックを解放するため循環待ちが起きず、デッドロックを回避できます。よってウが正解です。(出典: 令和元年度 秋期 基本情報技術者試験 午前 問29)
一問一答
科目A 180問+科目B 60問