考研帮 > 数学 > 每日一练

2.8 死锁

2.8.4 死锁预防

  所谓死锁预防,就是采用某种策略限制并发进程对资源的请求,使系统在任何时刻都不满足死锁的必要条件。死锁预防主要是针对破坏产生死锁的四个必要条件进行的。
  破坏互斥条件:由于这是设备的固有特性很难改变,因此不仅不能改变,还应设法加以保证。
  破坏不剥夺条件:资源暂时释放策略,申请新的资源得不到满足则暂时释放已有的资源。实现复杂,开销较大,比如要保护进程及资源释放的各处现场。此外该策略还可能由于反复地申请和释放资源,使进程的执行无限推迟,延长了进程的周转时间,增加了系统开销,降低了系统吞吐量。
  破坏请求与保持条件:一次性申请全部资源,系统若有足够资源,则一次性把其所需资源分配给进程。在分配时,只要有一个资源要求不能满足,则已有的其他资源也全部不分配给该进程,该进程只能等待。由于等待期间,该进程未占有任何资源,因此可以避免死锁。优点是简单、易于实现,但也可能造成资源浪费以及进程延迟运行。
  破坏环路条件:资源有序申请,给资源编号1~n,使用时按升序进行。这种策略的缺点是:为系统中各种资源类型分配的序号必须相对稳定,限制了新设备类型的增加;尽管在分配资源类型序号时,考虑到了大多数作业实际使用这些资源的排序,但也会经常发生作业使用资源的顺序与系统规定顺序不同的情况,造成资源的浪费;为了方便用户,尽量减少系统所施加的限制条件,然而按规定次序申请资源,限制了用户简单、自由地编程。
  总的来说,预防死锁有两种策略:一是预先静态分配法。它针对死锁的第三个条件,预先分配所需全部资源,这样能保证进程不等待资源。但是它的缺点是降低了资源的利用率,降低进程的并发程度,有可能无法预先知道所需资源;第二种策略是有序资源使用法。它针对死锁的第四个条件,把资源分类按顺序排列,这样能保证不形成环路。但它的缺点也很明显,即限制进程对资源的请求,另外资源的排序也占用一定的系统开销。

关于"最后阶段,真题的正确打开方式_备考经验_考研帮"15名研友在考研帮APP发表了观点

扫我下载考研帮

考研帮地方站更多

你可能会关心:

来考研帮提升效率

× 关闭