ウカマル応用情報技術者ログイン

平成29年度 春期 応用情報技術者 問29

テクノロジ系

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

トランザクションAトランザクションB
① トランザクション開始
② トランザクション開始
③ テーブルa更新
④ テーブルb更新
⑤ テーブルb更新
⑥ テーブルa更新
⑦ トランザクション終了
⑧ トランザクション終了
選択肢
正解と解説

正解 エ

デッドロックは、互いに相手が持つロックを待ち合う状態です。Aがbを待っている状態で、⑥でBがAのロックするaを要求した時点で成立します。

③でAがテーブルaをロックし、④でBがテーブルbをロックします。⑤でAがbを更新しようとしますが、bはBがロックしているので、Aは待ち状態になります。⑥でBがaを更新しようとしますが、aはAがロックしているので、Bも待ち状態になります。アンロックはトランザクション終了時にしか行われないため、AとBは互いの解放を待ち続けます。そのため、⑥の時点でデッドロックになります。

ア:③ではAがテーブルaをロックするだけです。ほかにロックを持つトランザクションはなく、待ちは発生しません。

イ:④ではBがテーブルbをロックするだけです。bはまだ誰もロックしていないので、待ちは発生しません。

ウ:⑤ではAがbの解放を待つだけです。この時点のBは待ち状態ではないので、まだデッドロックではありません。

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

全年度から出題。10問で実力を判定します。登録不要。

出典:平成29年度 春期 応用情報技術者試験 問29(独立行政法人情報処理推進機構)

解説と用語ページは生成 AI が書き、別の生成 AI が確かめています。作り方