资源图与死锁定理的灵活运用
@(OS)
强调一下,死锁预防需要限制资源的请求顺序。
死锁避免需要限制资源的分配顺序。
越早下手处理死锁问题,对机器的性能影响越大。因此,Unix这种追求快的系统,这两种都不采用,而是用的死锁检测和解除。
资源分配图
通常分析描述死锁,可以用资源分配图。关于资源分配图,要仅仅抓住两点:
- 请求边
- 分配边
关键在找:空闲资源。如果空闲资源可以满足某个进程,这个进程就可以解脱了,把它摘除资源分配图,再看剩下的资源分配图,,策略相同。
特别要注意,不要手动限制进程请求资源的顺序,再考虑解脱。这是无意识间用了死锁预防的策略,不是我们说的死锁解除。也就是说,死锁预防根本不会出现死锁,那么检测死锁时还采用限制请求的顺序,就是两个知识点混淆的表现。
死锁定理
再看死锁定理:在资源分配图中,把分配的资源与进程连好,再看进程请求边。按照分配边分配好以后,剩余的资源就是空闲资源。此时再来分析进程Pi的请求边,如果空闲资源都能满足Pi的请求,也就意味着Pi可以从这个纠缠的图中得到解脱。删除Pi的所有相关的资源:已分配的+请求的。
再递归处理剩下的资源分配图。
举个例子:
某资源分配图。我们先用红色的