×
システム構成・性能・ソフトウェア
  • お互いの鍵の掛け合い:プロセス1が「ファイルA」をロックし、プロセス2が「ファイルB」をロックしているとします。次に、プロセス1が処理を完了するために「ファイルB」を必要として待ち状態になり、同時にプロセス2も「ファイルA」を必要として待ち状態になります。両者がお互いの持っているロックの解除を待ち続けるため、どちらも動けなくなります。
  • 狭い道路でのすれ違い:車Aと車Bが、車1台分しか通れない狭い一本道で正面衝突しそうになり、お互いに「相手がバックしてくれるのを待つ」状態になり、どちらも一歩も動けなくなってしまう状況に似ています。

もう少し詳しく

デッドロック(Deadlock)は、複数の処理単位(プロセスやスレッド)が、互いに相手が占有している共有資源の解放を待ち合ってしまい、どちらの処理も永遠に先に進めなくなってシステム全体、あるいは一部が完全に停止(フリーズ)してしまう現象です。この現象が発生するためには、以下の4つの条件(一般にコフマン条件と呼ばれます)がすべて同時に満たされる必要があります。