死锁

作者: 大海孤了岛 | 来源:发表于2017-04-07 13:03 被阅读2次
出现死锁的必要条件
  • 互斥:任何时刻只能有一个进程使用一个资源实例
  • 持有并等待:进程保持至少一个资源,并正在等等获取其他进程持有的资源
  • 非抢占:资源只能在进程使用后自愿释放
  • 循环等待:出现环形等待
死锁的处理方法
  • ** 死锁预防:确保系统永远不会进入死锁状态**

预防是采用某种策略,限制并发进程对资源的请求,使系统在任何时刻都不满足死锁的必要条件

a. 互斥:

  • 把互斥的共享资源封装为可同时访问

b. 持有并等待:

  • 进程请求资源时,要求它不持有任何其他资源
  • 仅允许进程在开始执行时,一次请求所有需要的资源
  • 资源利用率低

c. 非抢占

  • 如进程请求不能立即分配的资源,则释放已占有资源
  • 只在能够同时获得所有需要资源时,才执行分配操作

d. 循环等待

  • 对资源排序,要求进程按顺序请求资源

  • 死锁避免:在使用前进行判断,只允许不会出现死锁的进程请求资源

利用额外的先验信息,在分配资源时判断是否会出现死锁,只在不会死锁时分配资源

  • a.要求进程声明需要资源的最大数目

  • b. 限定提供与分配的资源数量,确保满足进程的最大需求

  • c. 动态检查资源分配状态,确保不会出现环形等待

  • 死锁检测和恢复:在检测到运行系统进入死锁状态后,进行恢复

  • 通常操作系统会忽略死锁

相关文章

  • 死锁

    线程饥饿死锁 锁顺序死锁 动态锁顺序死锁通过锁顺序来避免死锁 避免死锁

  • 死锁

    第11章:死锁和进程通信 死锁概念 死锁处理方法 死锁预防(Deadlock Prevention) 死锁避免(D...

  • java多线程笔记

    产生死锁的四个必要条件 处理死锁的基本方法 死锁预防 死锁避免 死锁检测 死锁解除 https://blog.cs...

  • [现代操作系统]--死锁

    table of content 死锁定义 死锁建模-- 资源分配图 处理死锁鸵鸟算法检测并恢复死锁检测死锁恢复利...

  • Java-多线程(四)死锁

    死锁 死锁示例

  • Java死锁

    什么是死锁 死锁检测 产生死锁的四个必要条件 如何避免死锁 死锁 死锁,指两个或多个线程之间,由于互相持有对方需要...

  • java并发--java死锁

    本篇结构: 前言 什么是死锁 产生死锁的必要条件 死锁的代码示例 死锁排查 如何避免死锁 总结 一、前言 今天被问...

  • Java多线程之死锁(Deadlock)及死锁避免(Deadlo

    线程死锁(Thread Deadlock) 数据库死锁(Database Deadlocks) 死锁避免 (Dea...

  • JavaEE面试题总结 Day39 2018-12-29

    什么是线程死锁?死锁如何产生?如何避免线程死锁? 死锁的介绍: 线程死锁是指由于两个或者多个线程互相持有对方所需要...

  • Java并发之嵌套管程锁死(Nested Monitor Loc

    嵌套管程死锁是如何发生的 具体的嵌套管程死锁的例子 嵌套管程死锁 vs 死锁 嵌套管程锁死类似于死锁, 下面是一个...

网友评论

    本文标题:死锁

    本文链接:https://www.haomeiwen.com/subject/aohhattx.html