2相ロッキングプロトコルとは?
2相ロッキングプロトコルとは、複数のトランザクションを同時実行しても矛盾(不整合)が起きないことを保証するための排他制御の規則。トランザクション内でロックの取得だけを行う「拡張フェーズ」と、ロックの解放だけを行う「縮退フェーズ」に分け、一度縮退フェーズに入ったら再びロックを取得しないというルールを設ける。
基本情報技術者試験の過去問では1回出題されています。
にそうろっきんぐぷろとこる
2相ロッキングプロトコルの意味
複数のトランザクションを同時実行しても矛盾(不整合)が起きないことを保証するための排他制御の規則。トランザクション内でロックの取得だけを行う「拡張フェーズ」と、ロックの解放だけを行う「縮退フェーズ」に分け、一度縮退フェーズに入ったら再びロックを取得しないというルールを設ける。
2相ロッキングプロトコルの具体例
あるトランザクションがロックを取得している最中に別のロックを解放してしまうと、直感的でない実行順序が起こりうるため、取得と解放のフェーズを明確に分離することで、直列実行と同等の結果(直列可能性)を保証する。
2相ロッキングプロトコルは試験でどう引っ掛けられる?
名前が似た「2相コミット」とはまったく別物で、こちらは同時実行制御(排他制御)の規則。直列化可能性は保証するが、デッドロックは防げない点が最大の引っ掛け。取得だけの拡張フェーズが先、解放だけの縮退フェーズが後、と順序も逆にしない。
2相ロッキングプロトコルと関連する用語
2相ロッキングプロトコルが出た過去問
2相ロッキングプロトコルに従ってロックを獲得するトランザクションA、Bを図のように同時実行した場合に、デッドロックが発生しないデータ処理順序はどれか。ここで、r…
正解:①update X ②read W ③update Y ④update Z
要点:デッドロック回避の基本は、資源のロック順序を全体でそろえること
2相ロッキングでは獲得したロックをトランザクション終了まで解放しないため、2つのトランザクションが同じ2件のデータを互いに逆の順序でロックしようとするとデッドロックになる。トランザクションAはW、X、Y、Zの順に処理するので、Bも同じ相対順序でロックを取れば循環待ちは起きない。Wは共有ロックなので双方が同時に保持でき、待ちの原因にはならない点も判断材料になる。
出典:令和1年度 秋期 基本情報技術者試験 午前 問29(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。