分散デッドロック(ぶんさんでっどろっく)
最終更新:2026/4/28
分散デッドロックは、複数のシステムが互いに資源を要求し合い、誰も資源を得られず処理が進まなくなる状態を指す。
別名・同義語 分散型デッドロック
ポイント
集中管理システムとは異なり、分散システムではデッドロックの検出と解決が困難となる。予防策や回避策が重要となる。
分散デッドロックとは
分散デッドロックは、複数の計算機システムがネットワーク上で連携し、互いに資源を要求し合う状況で発生する。各システムが他のシステムの資源を待っているため、互いに処理を進めることができず、システム全体が停止してしまう現象である。
集中型デッドロックとの違い
従来の集中管理システムにおけるデッドロックは、単一のスケジューラが資源の割り当てを制御しているため、デッドロックの検出と解決が比較的容易である。しかし、分散システムでは、各システムが独立して資源を管理しているため、デッドロックの発生状況を把握し、解決策を講じることが困難になる。
分散デッドロックの発生原因
分散デッドロックの主な原因としては、以下の点が挙げられる。
- 資源の競合: 複数のシステムが同じ資源を同時に要求する場合。
- 通信の遅延: システム間の通信遅延により、資源の要求と解放のタイミングがずれる場合。
- 部分的な情報: 各システムが他のシステムの状況に関する情報を持たない場合。
分散デッドロックの解決策
分散デッドロックを解決するためのアプローチとしては、以下のものが存在する。
- デッドロック予防: デッドロックが発生しないように、資源の要求順序を制御するなどの対策を講じる。
- デッドロック回避: システムがデッドロックに陥る可能性を検出し、資源の割り当てを調整する。
- デッドロック検出と回復: デッドロックが発生した場合に、それを検出し、影響を受けるシステムを再起動するなどの回復処理を行う。
実例
例えば、複数の銀行のシステムが連携して融資処理を行う場合、ある銀行のシステムが別の銀行のシステムの承認を待っている間に、その銀行のシステムが別の銀行の承認を待っている、といった状況が発生する可能性がある。これが連鎖的に繰り返されると、分散デッドロックが発生し、融資処理が停止してしまう。