平成29年度春期 応用情報技術者試験 午前 問29
トランザクションAとBが,共通の資源であるテーブルaとbを表に示すように更新するとき,デッドロックとなるのはどの時点か。ここで,表中の①〜⑧は処理の実行順序を示す。また,ロックはテーブルの更新直前にテーブル単位で行い,アンロックはトランザクション終了時に行うものとする。

- ア ③
- イ ④
- ウ ⑤
- エ ⑥
解答・解説を見る
正解:エ
AI解説
デッドロックは,2つのトランザクションが互いに相手が保持するロックの解放を待ち合って両方とも進めなくなった時点で成立する。本問ではAとBが2つのテーブルを逆順に更新しており,先にAがテーブルbの,Bがテーブルaのロック待ちとなる⑥の時点で相互待ちが完成しデッドロックとなる。 ア: ③の時点では一方がロックを取得しただけで,相互の待ち合いは発生していない。 イ: ④の時点でも各トランザクションは自分の処理を進められており,待ちは片方向にすら確定していない。 ウ: ⑤では一方が相手のロック解放を待つ状態になるが,もう一方はまだ実行可能であり,デッドロックではない。 エ: 正しい。⑥で残る一方も相手が保持するテーブルのロック待ちに入り,互いに解放を待ち合う循環が完成してデッドロックとなる。 💡 デッドロックは「互いに逆順で資源を確保」したときに起こる。全トランザクションで資源の確保順序を統一するのが予防策,という点もセットで問われる。
出典:平成29年度 春期 応用情報技術者試験 午前 問29 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。
※Web掲載用に表記を一部変更しています。図表はIPA公式問題冊子から引用しています。著作権はIPAに帰属します。