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

令和元年度 秋期 午前 問29

データベース

ロックが発生しないデータ処理順序

2相ロッキングプロトコルに従ってロックを獲得するトランザクション A,B を図のように同時実行した場合に,デッドロックが発生しないデータ処理順序はどれか。ここで,read と update の位置は,アプリケーションプログラムでの命令発行時点を表す。また,データ W への read は共有ロックを要求し,データ X,Y,Z への update は各データへの専有ロックを要求する。

図(時間を縦軸にとった図):

時間 ↓
トランザクション A: read W → update X → update Y → update Z
トランザクション B: ①    → ②        → ③        → ④
(B の①〜④は A の各段より半段ずれて配置されている)

選択肢は原典では ①〜④ を列にとった表。

答えと解説を見る

✓ これが正解ウ①update X / ②read W / ③update Y / ④update Z

解説

二つが同じ順で資源を押さえれば、行き詰まりを避けられます。

二つの処理が互いに相手のロックを待つ状態を、デッドロックと呼びます。これを避ける最も確実な方法は、押さえる順番を全員でそろえることです。一方の処理は、共有の読み取りを済ませたあと、三つの資源を決まった順で書き換えていきます。もう一方も同じ並びで書き換えれば、先に押さえた側から順に進むだけになります。待つことはあっても、互いに待ち合う形にはなりません。順番を入れ替えると、片方が先に押さえたものを他方が後から欲しがる形が生まれます。そこへ逆向きの組が重なると、双方が相手を待つ輪ができてしまいます。読み取りは共有なので、位置が前後しても輪の原因にはなりません。見るべきは、書き換える三つの並びが二つの処理でそろっているかどうかです。

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

この問題の用語

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

同じ用語が出る問題

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