データベース

令和元年度 秋期 基本情報技術者試験 午前 問29

2 相ロッキングプロトコルに従ってロックを獲得するトランザクション A,B を図のように同時実行した場合に,デッドロックが発生しないデータ処理順序はどれか。ここで,read と update の位置は,アプリケーションプログラムでの命令発行時点を表す。また,データ W への read は共有ロックを要求し,データ X,Y,Z への update は各データへの専有ロックを要求する。
時間は上から下。トランザクション A の処理順: read W → update X → update Y → update Z。トランザクション B の処理順: ① → ② → ③ → ④(内容は選択肢の表で与えられる)。 表:
①②③④
アread Wupdate Yupdate Xupdate Z
イread Wupdate Yupdate Zupdate X
ウupdate Xread Wupdate Yupdate Z
エupdate Yupdate Zupdate Xread W
  • ア ①: read W / ②: update Y / ③: update X / ④: update Z
  • イ ①: read W / ②: update Y / ③: update Z / ④: update X
  • ウ ①: update X / ②: read W / ③: update Y / ④: update Z
  • エ ①: update Y / ②: update Z / ③: update X / ④: read W

出典:令和元年度 秋期 基本情報技術者試験 午前 問29

答えと解説を見る

正解:ウ

覚える知識

デッドロックの定義

2相ロッキングは、ロック獲得フェーズと解放フェーズを分けるプロトコルで、ロック要求順序が食い違うとデッドロックが生じる。

この問題で必要なこと

2相ロックではロックを事後まで保持するため、各トランザクションがロックを取る順序が逆になるとデッドロックが起きる。同じ順序でロックを要求すれば回避できる。

ひっかけ

逆順にロックを取る選択肢を選ばせる。

この知識の出題:本試験系 2 回・免除試験 4 回(公開問題での観測値)

この知識をアプリで解いて覚える レッスン「トランザクションと排他制御(ロック・デッドロック)」で学ぶ

同じ知識の過去問