ITパスポート試験
でっどろっく
デッドロック
Deadlock
複数の処理が互いに相手の資源の解放を待ち、どちらも進めなくなる状態です。
詳しい説明
1. 定義
デッドロックとは、複数の処理が互いに相手の持つ資源の解放を待ち合い、どちらも先へ進めなくなる状態のことです。
2. 仕組みと内訳
同時に動く複数の処理が、データの整合性を保つために資源を占有する(ロックする)ことから起こります。
処理Aが資源1を確保して資源2を待ち、処理Bが資源2を確保して資源1を待つと、両方が相手の解放を待ち続けます。どちらも相手が離すまで自分は離さないので、外から手を入れない限り解けません。
起こるためには次の状態がそろう必要があります。
- 資源が同時に1つの処理にしか使えない
- 資源を持ったまま、別の資源を待つ
- 他の処理から資源を取り上げられない
- 待ちの関係が輪になっている
輪を作らないことが、いちばん実際的な防ぎかたです。資源を確保する順番をあらかじめ決めておけば、AもBも資源1から取るので、待ちの関係が輪になりません。
起きてしまった場合は、どちらかの処理を取り消して資源を解放させ、あとでやり直します。
試験で問われること
ITパスポート試験
- 互いに待ち合って進めなくなる状態であることを理解する
- 排他制御と組で出てくる語であることを理解する
- 起きたときは片方を取り消してやり直すことを理解する
- 同時実行制御を扱う設問で、専有ロック・共有ロック・2相コミットメントと並べて出ます。どういう順で資源を取ると起こるかを図で追えることが要点です。
最終更新日: 2026/09/23