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

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

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

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


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

1)相互排斥条件:

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

2)请求和保持条件:

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

3)不剥夺条件:

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

4)环路等待条件:

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


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

1) 预防死锁。

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

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

2) 避免死锁。

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

3)检測死锁。

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

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

4)解除死锁。

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

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

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 成为一名CV(计算机视觉)工程师,你需要具备哪些能力?[通俗易懂]

    成为一名CV(计算机视觉)工程师,你需要具备哪些能力?[通俗易懂]2019年国家对人工智能加大了支持力度,媒体对人工智能的资讯报道也越来越多,刚刚结束的人工智能大会也展示了国内现在的人工智能的发展状况,“双马”对话中也处处透露出对人工智能的美好展望。人工智能一个很大的应用方向是CV(计算机视觉)。CV在如制造业、检验、文档分析、医疗诊断和军事等领域中各种智能系统中不可分割。具体的像无人驾驶、人脸识别、VR/AR等,未来在医疗领域等还将有更大的发展。那么成为一名计算机视觉工程师应该具备哪些能力呢?首先数学要学好。大学里开过的高数、线性代数、概率统计等课都十分

  • 裸奔程序和uCOS读取DM9000 ID的方法

    裸奔程序和uCOS读取DM9000 ID的方法

  • 验证码暴力破解测试[通俗易懂]

    验证码暴力破解测试测试原理和方法找回密码功能模块中通常会将用户凭证(一般为验证码)发送到用户自己才可以看到的手机号或者邮箱中,只要用户不泄露自己的验证码就不会被攻击者利用,但是有些应用程序在验证码发送功能模块中验证码位数及复杂性较弱,也没有对验证码做次数限制而导致验证码可被暴力枚举并修改任意用户密码。在测试验证码是否可以被暴力枚举时,可以先将验证码多次发送给自己的账号,观察验…

  • 可变长子网掩码划分例题_最小生成树是什么

    可变长子网掩码划分例题_最小生成树是什么北极的某区域共有 n 座村庄,每座村庄的坐标用一对整数 (x,y) 表示。为了加强联系,决定在村庄之间建立通讯网络,使每两座村庄之间都可以直接或间接通讯。通讯工具可以是无线电收发机,也可以是卫星设备。无线电收发机有多种不同型号,不同型号的无线电收发机有一个不同的参数 d,两座村庄之间的距离如果不超过 d,就可以用该型号的无线电收发机直接通讯,d 值越大的型号价格越贵。现在要先选择某一种型号的无线电收发机,然后统一给所有村庄配备,数量不限,但型号都是 相同的。配备卫星设备的两座村庄无论相距多远都可以直

  • jmespath(1)基础语法

    jmespath(1)基础语法前言JMESPath是JSON的查询语言。您可以从JSON文档中提取和转换元素官方文档:https://jmespath.org/tutorial.html基本表达式JMESPath用的最多的

  • java 生成xml dom4j_Java生成xml——DOM4J生成

    java 生成xml dom4j_Java生成xml——DOM4J生成一、四种方式的总结【DOM】DOM方式生成xml是基于DOM树的结构,整个DOM树会存在内存中,所以使用DOM方式可以频繁的修改xml的内容,但是因为DOM树是存在内存中的,所以对内存消耗较大。DOM方式比较适用于需要频繁删改的情况。【SAX】SAX方式生成xml是逐步写一、DOM4J生成实例Dom4JToXmlDemo.javapublicclassDom4JToXmlDemo{p…

发表回复

您的电子邮箱地址不会被公开。

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