2相ロッキングプロトコルに従ってロックを獲得するトランザクションA、Bを図のように同時実行した場合に、デッドロックが発生しないデータ処理順序はどれか。
ここで、readとupdateの位置は、アプリケーションプログラムでの命令発行時点を表す。
また、データWへのreadは共有ロックを要求し、データX、Y、Zへのupdateは各データへの専有ロックを要求する。
@ | A | B | C | |
ア | 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 |
答え ウ
【解説】
デッドロックは資源を専有ロックした際に複数のトランザクションが互いに専有ロックしている資源を専有ロックしようとすると発生するので、これを避けるためには専有する資源の順番を同じにすることで避けることができるので、トランザクションAと同じ順で専有するのは
@ | A | B | C | |
ウ | update X | read W | update Y | update Z |
【キーワード】
・ロック
・デッドロック