死锁避免,预防,检测算法

1. 死锁预防 (Deadlock Prevention)

死锁预防是最严格的策略。其核心思想是通过在系统设计时施加特定的限制,从结构上破坏死锁产生的四个必要条件中的至少一个,从而使得死锁永远不会发生。这更像是一系列静态策略协议,而不是动态运行的算法。


2. 死锁避免 (Deadlock Avoidance)

死锁避免是一种比预防更宽松的策略。它不要求破坏必要条件,而是在资源分配的过程中,通过一个动态运行的算法来判断本次分配是否会将系统带入“不安全状态”。如果会,则拒绝分配,让进程等待;否则,执行分配。

核心思想: 确保系统始终处于安全状态。所谓安全状态,是指系统能找到一个安全序列 <P1, P2, ..., Pn>,即按照这个序列的顺序为每个进程分配其所需资源,可以使所有进程都顺利完成。不安全状态不一定是死锁状态,但可能导致死锁。


3. 死锁检测与解除 (Deadlock Detection and Recovery)

这是最宽松的策略。它允许系统进入死锁状态,但要求系统能检测出死锁的发生,并采取措施解除死锁。