デッドロックは特定のことを意味します:現在お互いを待ってブロックされている2つ(またはそれ以上)のプロセスがあります。
で危険な状態あなたもそこな状況にあることができるかもしれない将来のデッドロックいつかあってもよいが、プロセスの一方または両方が実際に待って開始していないので、それはまだ起きていません。
次の例について考えてみます。
Process A Process B
lock X lock Y # state is "unsafe"
unlock Y
lock Y # state is back to "safe" (no deadlock this time. We got lucky.)
あなたが与えたリンクのセクション7.5.1にもっと興味深い例があります:
以下を備えた12台のテープドライブを備えたシステムを考えます。
Process Max Need Current
P0: 10 5
P2: 9 3
これは危険な状態です。しかし、私たちは行き詰まっているわけではありません。空きドライブは4つしかないため、たとえば、P0 が追加の5を要求し、P2 が追加の1を要求する場合、デッドロックが発生しますが、まだ発生していません。そして、P0はそれ以上のドライブを要求しないかもしれませんが、代わりにすでに持っているドライブを解放するかもしれません。Max need
プログラムのすべての可能な実行上で、これは我々がP0内のすべての10台のドライブを必要とする実行の1ではないかもしれません。