重要
避免死锁跟前面的预防死锁都是属于事先预防的策略,但并不是实现采取某种限制条件,破坏产生死锁的必要条件,而是在资源动态分配的过程中,防止系统进入不安全状态,以避免发生死锁
当系统处于安全状态时,可避免发生死锁,当系统处于不安全状态时,就可能进入到死锁状态
安全状态:所谓安全状态,是指系统能按某种进程推进顺序(P1,P2,......Pn)为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利完成。此时称(P1,P2,......Pn)为安全序列。如果系统无法找到这样的一个序列,系统就处于不安全状态
利用银行家算法避免死锁
每一个进程在进入系统时,必须申明在运行过程中,可能需要每种资源类型的最大单元数目,其数目不应该超过系统所拥有的资源总量,当进程请求一组资源时,系统首先必须确认是否有足够的资源分配给该进程,若有,会再进一步计算将这些资源分配给进程后,是否会使系统处于不安全的状态,如果不会,才将资源分配给它,否则让进程等待