平成28年度 春期
応用情報技術者試験問題と解答
問28
トランザクションA (処理A1→処理A2の順に実行する) とトランザクションB
(処理B1→処理B2の順に実行する)が、データベースの資源SとTに対し、
次のように処理A1→処理B1→処理A2→処理B2 の順で専有ロックを
要求する場合、デッドロックが発生する資源の組合せはどれか。
 なお、ロックは処理開始時にかけ、トランザクション終了時に解除する。

           ┌───┐ ┌───┐ ┌───┐
 トランザクションA │処理A1│→│処理A2│→│COMMIT│
           └───┘ └───┘ └───┘
             ┌───┐ ┌───┐ ┌───┐
 トランザクションB   │処理B1│→│処理B2│→│COMMIT│
             └───┘ └───┘ └───┘
         ───────────────────> 時刻

   ┌─┬─┬─┬─┐
   │A1│B1│A2│B2│
 ┌─┼─┼─┼─┼─┤
 │ア│S│S│T│T│
 ├─┼─┼─┼─┼─┤
 │イ│S│T│T│S│
 ├─┼─┼─┼─┼─┤
 │ウ│T│S│T│S│
 ├─┼─┼─┼─┼─┤
 │エ│T│T│S│S│
 └─┴─┴─┴─┴─┘



【正解】 イ
デッドロックは例えば、今、処理Aが資源Sを使っていて、
次に資源Tを使おうとしている一方で、
処理Bは資源Tを使っていて、次に資源Sを使おうとしている時、
処理Aも処理Bも互いに相手の資源解除を待ち続けていて、
固まってしまったようになる現象のこと。

イの場合、
@トランザクションAの処理A1が資源Sを専有ロックする。
AトランザクションBの処理B1が資源Tを専有ロックする。
BトランザクションAの処理A2が資源Tを使おうとするが、
 処理B1が専有ロックしているので、
資源Sを専有ロック
 したまま
、待ち状態になる。
CトランザクションBの処理B2が資源Sを使おうとするが、
 資源Sが専有ロックされているため、待ち状態になる。

こうして、互いのトランザクションが待ち状態になり、
デッドロック状態となる。

EXCEL VBAのご相談なら ファーストマクロ 



問27 目次 問29
ファーストマクロ TOPページ