死锁的定义以及产生死锁的必要条件,死锁处理

死锁的定义:如果一组进程中的每个进程都在等待仅由该组进程中的其他进程才能引发的事件发生,那么该组进程是死锁的。
。产生死锁的必要条件
1.互斥条件:进程对所分配到的资源进行排他性使用,即在一段时间内,某资源只能被一个进程占用。
2.请求和保持条件:进程已经占有了至少一个资源,但又提出了新的资源请求,而该被请求的资源已经被其他进程占有,此时请求进程被阻塞,同时其对自己已经占有的资源保持不放。
3.不可抢占条件:进程已经获得的资源在未使用完之前不能被抢占,只能在进程使用完毕由其自己释放。
4.循环等待条件:指在发生死锁时,必然存在一个“进程-资源”循环链,即一个进程集合中的前一个进程在等待被后一个进程所占有的资源。
。死锁的处理方法:
1.预防死锁:通过设置某些限制条件,去破坏死锁的4个必要条件的其中几个。
2.避免死锁:在资源的动态分配过程中,用某种方法防止系统进入不安全状态,从而避免发生死锁。
3。检测死锁;允许进程在运行过程中发生死锁,但可通过检测机构及时的检测出死锁的发生,然后采取适当措施把进程从死锁状态中解脱出来
4.解除死锁:当检测到系统中已发生死锁时就采取相应措施,把进程从死锁状态接触出来,通常采取的措施是撤销一些进程,回收他们的资源,并把资源分配给已处于阻塞状态的进程,使它们继续运行。

相关推荐

  1. 定义以及产生必要条件处理

    2024-04-01 08:08:02       45 阅读
  2. 问题,4个必要条件+避免

    2024-04-01 08:08:02       65 阅读
  3. 以及如何避免

    2024-04-01 08:08:02       38 阅读
  4. 产生原因和预防

    2024-04-01 08:08:02       57 阅读
  5. 产生预防处理解

    2024-04-01 08:08:02       26 阅读
  6. 举一个产生Redis分布式场景。

    2024-04-01 08:08:02       19 阅读
  7. 2024-04-01 08:08:02       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 08:08:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 08:08:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 08:08:02       82 阅读
  4. Python语言-面向对象

    2024-04-01 08:08:02       91 阅读

热门阅读

  1. npm发布自己的插件包

    2024-04-01 08:08:02       36 阅读
  2. HTML——3.链接、头部、图像

    2024-04-01 08:08:02       29 阅读
  3. 小程序页面传参?

    2024-04-01 08:08:02       30 阅读
  4. 听说小程序可以转换APP?

    2024-04-01 08:08:02       36 阅读
  5. Android 手机部署whisper 模型

    2024-04-01 08:08:02       31 阅读
  6. JVM面试题(四)

    2024-04-01 08:08:02       26 阅读
  7. 使用Docker搭建SABnzbd

    2024-04-01 08:08:02       30 阅读
  8. Python、Pycharm、Anaconda 三者之间的关系

    2024-04-01 08:08:02       36 阅读
  9. JVM面试题(三)

    2024-04-01 08:08:02       41 阅读
  10. 数组逆序(以字符串逆序为例)

    2024-04-01 08:08:02       32 阅读
  11. 如何保证MySQL与redis中数据保持一致?

    2024-04-01 08:08:02       37 阅读