1.死锁的定义
多个进程因为竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程将无法向前推进。
2.死锁产生的原因
(1)系统资源竞争 多个进程竞争有限的资源而陷入僵局(其实就是定义)。
(2)进程推进顺序非法 进程在运行过程中,请求和释放资源的顺序不当,也同样会引起死锁。
3.死锁产生的必要条件
(1)互斥条件 在一段时间内某资源仅为某一进程所拥有。
(2)不剥夺条件 进程所获得的资源在未使用完之前,不能被其他进程所剥夺。
(3)请求与保持条件 进程已经保持了至少一个进程,但又请求其他资源,却用对自己保持的资源不释放。
(4)循环等待条件 在循环等待链中,链中每个进程所获得的资源同时又被下一个进程所请求。
4.死锁的处理策略
其实,主要包括预防死锁,避免死锁,死锁检测和解除。
(1)死锁预防 其实就是破坏死锁的四个必要条件之一即可。优点:适用于做突发式处理的进程,不必进行剥夺。缺点:效率低,进程初始化时间延长。
(2)死锁避免 是预防和检测的折中。银行家算法重点说一下。
银行家算法的主要思想就是避免系统进入不安全状态。在每次进行资源分配时,它首先检查系统是否有足够的资源满足要求,如果有,则先进行分配,并对分配后的新状态进行安全性检查。如果新状态安全,则正式分配上述资源,否则就拒绝分配上述资源。这样保证了算法处于安全状态,避免了死锁的发生。
(3)死锁检测和解除 死锁解除的方法主要有资源剥夺法,撤销进程法以及进程回退法。