過去問解きまくり研究所 ホーム

平成28年度 春期 午前 問28

データベース

デッドロックに関する問題

トランザクション A(処理 A1→処理 A2 の順に実行する)とトランザクション B(処理 B1→処理 B2 の順に実行する)が,データベースの資源 S と T に対し,次のように処理 A1→処理 B1→処理 A2→処理 B2 の順で専有ロックを要求する場合,デッドロックが発生する資源の組合せはどれか。
なお,ロックは処理開始時にかけ,トランザクション終了時に解除する。

〔図〕(原典は時間軸の上に 2 本のトランザクションを並べた図)
トランザクションA  [処理A1]→[処理A2]→[COMMIT]
トランザクションB          [処理B1]→[処理B2]→[COMMIT]
                  ──────────────────→ 時刻
※B は A より右にずれて描かれている = 処理 A1→処理 B1→処理 A2→処理 B2 の順。
A1B1A2B2
アSSTT
イSTTS
ウTSTS
エTTSS
答えと解説を見る

✓ これが正解イS T T S

解説

同じ二つの資源を、逆の順に取りにいく組合せです。

設問のなお書きが効いています。ロックは処理の開始時にかけ、解除はトランザクションの終了時なので、先に取った資源は最後まで握り続けます。つまり二つ目の処理に入る時点で、そのトランザクションは資源を二つ抱えようとします。デッドロックは待ちが輪になった状態、すなわち互いに相手の持ち物を待つ形です。要求の順は固定されているので、順に追います。最初に片方が S を取り、次にもう片方が T を取ります。別の資源なのでどちらも取れます。続いて先の側が T を求めますが、これは相手が握っているので待ちに入ります。最後に後の側が S を求めますが、これも相手が握っているので待ちに入ります。両者が互いを待つので処理は進まなくなります。見分けは、二本のトランザクションの取得順が交差しているかどうかの一点です。防ぐには資源に順番を決めて全員が同じ順で取るようにします。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成28年度 春期 応用情報技術者試験 午前 問28

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)