平成28年 春期 応用情報技術者 午前 問28

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

A1 B1 A2 B2
S S T T
S T T S
T S T S
T T S S


答え イ


解説
デッドロックが発生するのは2つのトランザクションで2つの資源を占有ロックするとき、異なる順番で占有ロックを行うと発生するので

A1 B1 A2 B2
S T T S
になります。
処理A1で資源Sを占有ロック、処理B1で資源Tを占有ロックし、処理A2で資源Tを占有ロックしたいが資源TはトランザクションBが占有ロックしているので解放待ち、処理B2で資源Sを占有ロックしたいが資源SはトランザクションAが占有ロックしているので解放待ちでデッドロックになります。


キーワード
・ロック
・デッドロック

キーワードの解説
  • ロック(lock)
    複数の処理(トランザクション)が動作している環境で、複数の処理が同じデータ(資源)に同時にデータの書換えを行うと、データに不整合が生じるので、書き換えを行う前に他の処理からのアクセスを制限する処理をロックといいます。(排他処理)
  • デッドロック(deadlock)
    複数の処理(トランザクション)で、互いに相手が占有している資源(データ)を占有(ロック)しようとして、処理が停止することです。
    処理がA、B、資源がX、Yのときに、処理Aが資源Xを占有し、処理Bが資源Yを占有している状態で、処理Aが資源Yの占有待ちになり、処理Bが資源Xの占有待ちになると、処理AとBはデッドロック状態になります。

もっと、「デッドロック」について調べてみよう。

戻る 一覧へ 次へ