過去問解きまくり研究所 ホーム

平成29年度 春期 午前 問29

データベース

デッドロックに関する問題

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

〔表:処理の実行順序〕

順序トランザクション Aトランザクション B
①トランザクション開始
②トランザクション開始
③テーブル a 更新
④テーブル b 更新
⑤テーブル b 更新
⑥テーブル a 更新
⑦トランザクション終了
⑧トランザクション終了
答えと解説を見る

✓ これが正解エ⑥

解説

待ちの矢印が一周した時点が答えです。

設問は、二つのトランザクションが共通の資源である表を更新していくとき、デッドロックとなるのはどの時点かを選ばせています。前提は設問が二つ与えています。ロックは更新の直前に表の単位で掛けること、そして外れるのはトランザクションが終わるときだけであることです。つまり一度確保した表は、最後まで手放されません。この前提を置いたうえで、判定の基準を先に決めておきます。デッドロックとは、互いに相手が抱えている資源の解放を待ち合い、どちらも先へ進めなくなった状態です。片方が止まっただけでは足りません。もう一方が動けるなら、やがて終了して資源を手放すので、待ちはいずれ解けます。そこで各時点について、誰が何を抱え、誰が何を待っているかを書き出し、待っている向きを矢印で結んでいきます。矢印が一方向だけのうちはただの順番待ちで、矢印が一周して輪になった瞬間が答えです。この表では二つの処理が互いに逆の順序で二つの表を取りに行くため、六番目の更新で輪が閉じます。

ほかの選択肢はなぜ違うのか

この問題の用語

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

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)