令和元年度 秋期 基本情報技術者試験 午前 問29
テクノロジ/データベース2相ロッキングプロトコルに従ってロックを獲得するトランザクション A,B を図のように同時実行した場合に,デッドロックが発生しないデータ処理順序はどれか。ここで,read と update の位置は,アプリケーションプログラムでの命令発行時点を表す。また,データ W への read は共有ロックを要求し,データ X,Y,Z への update は各データへの専有ロックを要求する。 (注:本サイトでは原問題の表を文字表記に変換しています)

出典:令和元年度 秋期 基本情報技術者試験 午前 問29
- ア①read W,②update Y,③update X,④update Z
- イ①read W,②update Y,③update Z,④update X
- ウ①update X,②read W,③update Y,④update Z
- エ①update Y,②update Z,③update X,④read W
正解:ウ
解説
デッドロックは,二つのトランザクションが互いに相手の保持するロックを待ち合うときに発生します。2相ロッキングでは獲得したロックを処理の途中で解放しないため,専有ロックを要求する資源の獲得順序が両者で食い違うと待ち合いが生じます。データ W への read は共有ロックで,共有ロック同士は両立するので競合しません。したがって専有ロックを要求する X,Y,Z の順序が,トランザクションA の X→Y→Z と同じ順序になっている選択肢を選べばよいことになります。
選択肢ごとの解説
- ア誤り。Bの専有ロック獲得順が Y→X→Z となり,Aの X→Y→Z と食い違うため,AがYを,BがXを待つデッドロックが起こり得ます。
- イ誤り。Bの専有ロック獲得順が Y→Z→X で,Aの順序と食い違うためデッドロックが起こり得ます。
- ウ正しい。Bの専有ロック獲得順が X→Y→Z でAと同じであり,共有ロックのWは競合しないため,待ち合いの循環が生じません。
- エ誤り。Bの専有ロック獲得順が Y→Z→X でAと食い違うため,デッドロックが起こり得ます。