IT用語
(
ひよぺん
)
Home
コラム
用語集
About
検索
Ctrl K
Esc
見つかりませんでした
調べたいIT用語を入力してね
デッドロック
でっどろっく
プログラミング
用語集
› 💻 プログラミング › デッドロック
【でっどろっく】
デッドロック とは?
最終更新:
2026年4月2日
💡 「お互いに道を譲らない」膠着状態
📌 このページのポイント
相互排除、保持と待機、横取り不可、循環待ちの4条件が揃うと発生
データベース
の
トランザクション
でも発生する
タイムアウト
やロック順序の統一で予防
IPA試験のOS分野で頻出テーマ
デッドロック(Deadlock)
プロセスA
リソース1を保持中
プロセスB
リソース2を保持中
リソース1
リソース2
保持
保持
要求(待ち)
要求(待ち)
!
互いに相手のリソースを待ち続け、永遠に進めない状態
解決策:ロック順序の統一・タイムアウト・デッドロック検出
2つのプロセスが互いのリソースを待ち合い永久に停止する状態
ひよこ
どういう状況で起きるの?
ペンギン先生
スレッド
Aが
リソース
Xをロックしてから
リソース
Yをロックしようとする。同時に
スレッド
Bが
リソース
Yをロックしてから
リソース
Xをロックしようとする。AはBがYを解放するのを待ち、BはAがXを解放するのを待つ。お互い永遠に待ち続けてどちらも進めない。これがデッドロックだよ
ひよこ
データベース
でも起きるの?
ペンギン先生
起きるよ。
トランザクション
Aが行1をUPDATEしてロック→行2をUPDATE。
トランザクション
Bが行2をロック→行1をUPDATE。互いにロック待ちになる。RDBMSはデッドロック検出機能を持っていて、検出するとどちらかの
トランザクション
を
ロールバック
してくれる。エラーを受けたら
リトライ
するのが定石だよ
ひよこ
デッドロックの予防法は?
ペンギン先生
①ロック順序を統一(全
スレッド
が
リソース
A→B→Cの順でロック)、②
タイムアウト
を設定(一定時間ロックが取れなかったら諦める)、③ロックの粒度を小さく(テーブルロックではなく行ロック)、④
楽観的ロック
(ロックせずに更新時にバージョンチェック)。4条件のうち1つでも潰せばデッドロックは発生しないよ
ひよこ
IPA試験での出題パターンは?
ペンギン先生
「デッドロックの4条件(コフマンの条件)を答えよ」→相互排除、保持と待機、横取り不可、循環待ち。「デッドロックが発生するかの判定」には
リソース
割当グラフ(待ちグラフ)で循環を検出する問題が出る。「銀行家の
アルゴリズム
」でデッドロック回避する問題もあるよ
まとめ:ざっくりこれだけ覚えればOK!
「デッドロック」って出てきたら「お互いのロック解放を待ち続けて動けなくなる状態」と思えればだいたいOK!
📖 おまけ:英語の意味
「Deadlock」
= 行き詰まり
💬 Dead(死んだ)Lock(錠前)。鍵がかかったまま解除不能になるイメージだよ
🔗 あわせて読みたい
ACID特性 とは?
プロセスとスレッド とは?
競合状態(レースコンディション) とは?
シェアする
X
URLコピー
← 用語集にもどる