平成19年 春期 ソフトウェア開発技術者 午前 問67

トランザクションAとBが、共通の資源であるテーブルaとbを表のように更新するとき、デッドロックとなるのはどの時点か。
ここで、表中の@〜Gは処理の実行順序を示す。
また、ロックはテーブルの更新直前に行い、アンロックはトランザクションの終了後に行うものとする。

 ア  B  イ  C  ウ  D  エ  E


答え エ


解説
トランザクションの動きを追って確認します。

B  トランザクションAがテーブルaをロックします。
C  トランザクションBがテーブルbをロックします。
D  トランザクションAはトランザクションBがロックしているテーブルbのアンロック待ちになります。
トランザクションAは停止、トランザクションBは、この時点ではまだ動作しています。
E  トランザクションBはトランザクションAがロックしているテーブルaのアンロック待ちになります。
この時点で、トランザクションA、トランザクションBの両方が停止したので、デッドロック状態です。


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

キーワードの解説
  • デッドロック(deadlock)
    複数のプロセス(プログラム、トランザクション)が、相手が占有(ロック)している資源をお互いに解放待ち状態になってしまい、処理が停止することです。
    データの排他制御の問題や、プロセスの占有順の不統一からデッドロックは発生します。

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

戻る 一覧へ 次へ