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