IPA過去問ドリル

平成29年度 春期 応用情報技術者試験 午前 問29

テクノロジ/データベース

トランザクションAとBが,共通の資源であるテーブルaとbを表に示すように更新するとき,デッドロックとなるのはどの時点か。ここで,表中の①〜⑧は処理の実行順序を示す。また,ロックはテーブルの更新直前にテーブル単位で行い,アンロックはトランザクション終了時に行うものとする。 ① トランザクションA:トランザクション開始 ② トランザクションB:トランザクション開始 ③ トランザクションA:テーブルa更新 ④ トランザクションB:テーブルb更新 ⑤ トランザクションA:テーブルb更新 ⑥ トランザクションB:テーブルa更新 ⑦ トランザクションA:トランザクション終了 ⑧ トランザクションB:トランザクション終了 (注:本サイトでは原問題の表を文字表記に変換しています)

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

正解:エ

解説

③でAがテーブルaをロックし,④でBがテーブルbをロックします。⑤でAはテーブルbの更新を試みますが,bはBがロック中のため待たされます(Aはブロックされるがまだデッドロックではありません)。⑥でBがテーブルaの更新を試みると,aはAがロック中のため待たされ,この時点でAはbを,BはaをそれぞぞれAとBが互いに待ち合うデッドロック状態が成立します。

選択肢ごとの解説

  • 誤り。③はAがテーブルaを最初にロックする時点であり,まだ資源の競合は発生していません。
  • 誤り。④はBがテーブルbを最初にロックする時点であり,まだ資源の競合は発生していません。
  • 誤り。⑤の時点ではAがbの空きを待ち始めるだけで,Bはまだ他の資源を待っていないため,デッドロックはまだ成立していません。
  • 正しい。⑥でBがAの保持するテーブルaを要求してブロックされることにより,AとBが互いに相手の資源を待ち合うデッドロックが成立します。
応用情報技術者の過去問を演習モードで解く