zoukankan      html  css  js  c++  java
  • 死锁处理策略和死锁预防

    死锁处理策略

      1.预防死锁

        设置某些限制条件,破坏产生死锁的四个必要条件中的一个或几个,以预防发生死锁

      2.避免死锁

        在资源的动态分配中,用某种方法防止系统进入不安全状态。从而避免死锁。

      3.死锁检测和解除

        无需采取任何限制性措施,允许进程在运行过程中发生死锁。通过系统检测机构及时地检测死锁的发生,然后采取某种措施解除死锁。

    预防死锁和避免死锁都是属于事先防范策略,但预防死锁的限制条件比较严格,实现起来较为简单,但往往导致系统的效率低,资源利用率低;避免死锁的限制条件相对宽松,资源分配后需要通过算法来判断是否进入不安全状态,实现起来较为复杂。

    死锁预防

    防止死锁的发生只需要破坏死锁产生的四个必要条件之一即可。

    死锁避免

    死锁避免同样是属于事先预防的策略,但并不是事先采取某种限制措施破坏死锁的必要条件,而是在资源动态分配过程中,防止系统进入不安全状态,以避免发生死锁。这种方法所实施加的限制条件较弱,可以获得较好的系统性能。

    银行家算法是著名的死锁避免算法。

    它的思想是:把操作系统看做是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求 分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源。

    否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数和本次申请的资源数之和是否超过了该进程对资源的最大的需求量。若超过则拒绝分配资源,过没有超过则再测试系统现存的资源能否满足该进程尚需的最大的资源量,若能满足则按当前的申请分配资源,否则也要推迟。

    解除死锁的方法:

      1.资源剥夺法:挂起某些死进程并抢夺它的资源,以便让其他进程继续推进

      2.撤销进程法:强制撤销部分,甚至全部死锁进程并剥夺这些进程的资源

      3.进程回退法:让进程回退到足以避免死锁的地步

  • 相关阅读:
    mysql小结
    微信小程序中使用iconfont图标
    微信小程序添加底部自定义导航栏(tabBar)
    微信小程序实现简单计算器
    使用koa2做一个简单的图片上传web
    Promise 对象
    css常用的布局属性
    微信小程序知识点总结(持续更新中)
    Cannot read property 'data' of undefined;at api showModal success callback function
    Asp.net Core WebApi使用Swagger
  • 原文地址:https://www.cnblogs.com/littleswan/p/11369297.html
Copyright © 2011-2022 走看看