デッドロック(Deadlock)は、複数の処理単位(プロセスやスレッド)が、互いに相手が占有している共有資源の解放を待ち合ってしまい、どちらの処理も永遠に先に進めなくなってシステム全体、あるいは一部が完全に停止(フリーズ)してしまう現象です。この現象が発生するためには、以下の4つの条件(一般にコフマン条件と呼ばれます)がすべて同時に満たされる必要があります。
1つ目は「相互排他(Mutual Exclusion)」です。これは、資源が一度に1つのプロセスにしか割り当てられず、複数のプロセスが同時にアクセスできない状態を指します。2つ目は「保持して待つ(Hold and Wait)」で、すでに何らかの資源を保持しているプロセスが、さらに別のプロセスが占有している資源を要求し、その割り当てを待機する状態です。3つ目は「横取り不可(No Preemption)」で、他のプロセスが保持している資源を、OSなどが強制的に奪い取ることができないことを意味します。4つ目は「循環待ち(Circular Wait)」で、複数のプロセスが環状に(AはBを待ち、BはCを待ち、CはAを待つというように)資源を待ち合っている状態です。