データベース
令和元年度 秋期 基本情報技術者試験 午前 問29
2 相ロッキングプロトコルに従ってロックを獲得するトランザクション A,B を図のように同時実行した場合に,デッドロックが発生しないデータ処理順序はどれか。ここで,read と update の位置は,アプリケーションプログラムでの命令発行時点を表す。また,データ W への read は共有ロックを要求し,データ X,Y,Z への update は各データへの専有ロックを要求する。
時間は上から下。トランザクション A の処理順: read W → update X → update Y → update Z。トランザクション B の処理順: ① → ② → ③ → ④(内容は選択肢の表で与えられる)。
表:
| ① | ② | ③ | ④ | |
|---|---|---|---|---|
| ア | 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 |
- ア ①: 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 回(公開問題での観測値)