過去問ドリル

デッドロックとは

複数の処理が互いに相手の持つ資源を待ち続け、どれも先へ進めなくなる状態。

解説

たとえば処理Aが資源Xを確保して資源Yを待ち、処理Bが資源Yを確保して資源Xを待つと、どちらも永久に進めません。デッドロックは次の4条件がそろったときに起こります。①相互排除(資源を同時に1つの処理しか使えない)、②保持と待機(資源を持ったまま別の資源を待つ)、③非横取り(他の処理が持つ資源を強制的に奪えない)、④循環待ち(待ちの関係が輪になっている)。1つでも成り立たないようにすれば防げ、資源の確保順序をそろえるのは循環待ちを防ぐ代表的な方法です。

試験での出方

デッドロックが起こる条件や、防止策の説明を選ぶ問題が出ます。データベースのロックでも同様の現象が起こるため、DB分野でも問われます。

あわせて読みたい用語

この用語が解説に出てくる問題