一、预防死锁
通过设置某些限制条件,去破坏死锁的四个必要条件中的一个或几个来预防产生死锁。(死锁的必要条件知不道的见【OS笔记 25】)
为什么这样就一定不会发生死锁了呢?可以用数学逻辑推理来证明:
我们设 A = “发生死锁” ,B = “死锁(A)的四个必要条件”
因为B是A的必要条件,所以有 A -> B,即A发生,B一定发生
由逆反律知:非B -> 非A ,即B不成立,则A不成立
二、避免死锁
在资源的动态分配过程中,用某种方法防止系统进入不安全的状态(即可能发生死锁的状态),从而避免死锁的发生。
三、检测死锁
这种方法允许在进程运行过程中发生死锁,但是可以通过某些算法检测到死锁的发生,然后采取措施解除死锁。
四、解除死锁
检测到死锁后,利用某些办法解除死锁。
总结与对比:
其中一和二都是属于事先预防的策略,因此使用了这两种方法后,绝对不会产生死锁。
三和四更像是一套的措施,事先没有预防,检测到发生死锁后,就想办法解除。
从一到四,防范程度逐渐减弱,但对应的是资源利用率的提高以及并发程度的提高。