基本情報技術者試験「デッドロック」の問題
2つのトランザクションが互いに相手の保持する資源のロック解放を待ち、両者とも処理が進まなくなる状態はどれか。
アロック競合
イ隔離(分離)
ウデッドロック
エ耐久性の欠如
正解
ウ.デッドロック
複数のトランザクションが互いに相手の保持資源のロック解放を待ち、どれも待機から抜け出せず処理が進まない循環待ちの状態をデッドロックと呼ぶ。設問の説明そのものなので正しい。
?選択肢ごとの解説
ア ×単なるロック競合による待機・遅延はいずれ解放されれば処理が進むため、永久に進まないデッドロックとは区別される。
イ ×隔離(分離)は更新が他から見えない独立性に関する性質であり、相互待機による停止とは別概念である。
ウ ○複数のトランザクションが互いに相手の保持資源のロック解放を待ち、どれも待機から抜け出せず処理が進まない循環待ちの状態をデッドロックと呼ぶ。設問の説明そのものなので正しい。
エ ×耐久性の欠如は確定済みデータが障害で失われる問題であり、ロックの待ち合いとは無関係である。
✎くわしく
デッドロックは相互排除・保持待ち・横取り不可・循環待ちの4条件が揃うと発生する。対策にはロック獲得順序の統一(循環待ち回避)、タイムアウト、検出後のいずれかのトランザクションの強制ロールバックがある。
✓本番での押さえどころ
試験のコツ
『互いに相手を待つ循環』ならデッドロック。資源獲得順序を全トランザクションで統一すると予防できる。
覚え方
デッドロックは『お見合い』。互いに『あなたが先に』と譲り合って誰も進まない膠着、とイメージする。
よくある誤り
一時的なロック競合(やがて解消)と永久停止のデッドロックを混同する誤りが多い。循環待ちが鍵である。
データベースの他の問題
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0056