死锁的产生条件和预防处理[通俗易懂]

死锁的产生条件和预防处理

大家好,又见面了,我是全栈君。

       所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象。若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。因为资源占用是相互排斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续执行。这就产生了一种特殊现象死锁。


       尽管进程在执行过程中,可能发生死锁,但死锁的发生也必须具备一定的条件,死锁的发生必须具备下面四个必要条件

1)相互排斥条件:

       指进程对所分配到的资源进行排它性使用,即在一段时间内某资源仅仅由一个进程占用。假设此时还有其他进程请求资源,则请求者仅仅能等待,直至占有资源的进程用毕释放。

2)请求和保持条件:

       指进程已经保持至少一个资源。但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程堵塞,但又对自己已获得的其他资源保持不放。

3)不剥夺条件:

      指进程已获得的资源,在未使用完之前,不能被剥夺,仅仅能在使用完时由自己释放。

4)环路等待条件:

      指在发生死锁时,必定存在一个进程——资源的环形链。即进程集合{P0P1P2···Pn}中的P0正在等待一个P1占用的资源。P1正在等待P2占用的资源。……Pn正在等待已被P0占用的资源。


在系统中已经出现死锁后,应该及时检測到死锁的发生,并採取适当的措施来解除死锁。眼下处理死锁的方法可归结为下面四种:

1) 预防死锁。

  这是一种较简单和直观的事先预防的方法。

方法是通过设置某些限制条件。去破坏产生死锁的四个必要条件中的一个或者几个,来预防发生死锁。预防死锁是一种较易实现的方法,已被广泛使用。可是因为所施加的限制条件往往太严格,可能会导致系统资源利用率和系统吞吐量减少。

2) 避免死锁。

  该方法相同是属于事先预防的策略。但它并不须事先採取各种限制措施去破坏产生死锁的的四个必要条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。

3)检測死锁。

  这样的方法并不须事先採取不论什么限制性措施。也不必检查系统是否已经进入不安全区,此方法同意系统在执行过程中发生死锁。

但可通过系统所设置的检測机构,及时地检測出死锁的发生,并精确地确定与死锁有关的进程和资源。然后採取适当措施,从系统中将已发生的死锁清除掉。

4)解除死锁。

  这是与检測死锁相配套的一种措施。当检測到系统中已发生死锁时。须将进程从死锁状态中解脱出来。

经常使用的实施方法是撤销或挂起一些进程,以便回收一些资源,再将这些资源分配给已处于堵塞状态的进程。使之转为就绪状态,以继续执行。

死锁的检測和解除措施,有可能使系统获得较好的资源利用率和吞吐量,但在实现上难度也最大。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116453.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月21日 上午9:00
下一篇 2022年1月21日 上午9:00


相关推荐

  • Oscium双频带频谱分析仪「建议收藏」

    Oscium双频带频谱分析仪「建议收藏」新一代Wipry5X为频谱分析仪WipryCombo的升级版本,主要针对2.4&5GHz两个频段的wifi信号进行测试,同时兼容苹果iOS和Android双系统;具有双带频谱分析功能,智能的触摸屏操作,简便快捷,口袋型轻巧的设计,对数据记录分析,随时发送E-mail功能,让你的测试测量变得随时随地,不再受时间、空间、地理位置的影响。WiPry5X性能指标

    2022年8月11日
    10
  • 什麼是 Manus AI Agent?運作原理與使用方法全解析

    什麼是 Manus AI Agent?運作原理與使用方法全解析

    2026年3月15日
    2
  • ext.apply()_函数evaluate的应用

    ext.apply()_函数evaluate的应用转载网址:http://www.cnblogs.com/yin-jingyu/archive/2011/07/30/2122176.htmlapply的用法:    Ext中apply及applyIf方法的应用apply及applyIf方法都是用于实现把一个对象中的属性应用于另外一个对象中,相当于属性拷贝。不同的是apply将会覆盖目标对象中的属性,而apply

    2022年7月28日
    6
  • stat 函数_stat函数返回值

    stat 函数_stat函数返回值stat函数讲解(转) 表头文件:   #include         #include定义函数:    intstat(constchar*file_name,structstat*buf);函数说明:    通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值:    执行

    2022年8月21日
    14
  • Nginx与frp结合实现局域网和公网的双重https服务

    Nginx与frp结合实现局域网和公网的双重https服务

    2026年3月15日
    3
  • 手机看片神器地址_给我一个可以手机看片的

    手机看片神器地址_给我一个可以手机看片的你是不是想找可以免费在线看电影电视剧的网站,但总是找不到可以正常使用的影视网站。其实要想找可以手机免费看片的电影网站,直接找一些优质的导航网站即可,这些导航网站收录了大量的精品影视资源网站。如果你是自己网上查找,会经常搜到一些假的点网站,个别好用的还经常会失效。而导航网站一般都会筛选测试好用的手机在线看片电影网站,并且会不断的更新完善。推荐两个可以免费手机看片神器电影网址导航网站1.办公人导航办公人导航网是一个实用的办公生活导航网站,收录了大量的办公相关的精品站点。在办公人导航网的影视网站栏目,.

    2025年12月4日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号