首页 > 其他分享 >整理常见问题一死锁条件

整理常见问题一死锁条件

时间:2023-10-10 09:44:25浏览次数:34  
标签:常见问题 请求 进程 死锁 防止 条件 整理 资源

1、死锁的条件

死锁是两个或两个以上的进程在执行过程中,由于竞争资源或进程推进顺序非法造成的阻塞现象,若无外力作用将无法推进下去。

四个必要条件

1)互斥条件:一个资源每次只能被一个进程使用(涉及的资源是非共享的)

2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放;

3)不剥夺条件:进程已获得资源,在未使用完之前,不能强行剥夺;

4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系;

解决方法

1)预防:通过设置某些限制条件,以破坏产生死锁的四个条件中的一个或几个,来防止发生死锁。具体可通过以下三种方法实现:

  A、防止部分分配(摒弃请求和保持条件)

  B、防止“不剥夺”条件出现

  C、防止“环路等待”条件出现

2)避免:在进程请求分配资源是,采用某种算法(银行家算法)来预防可能发生的死锁,从而拒绝可能引起死锁的某个资源请求。

  避免死锁与预防死锁的区别在于:预防死锁是设法至少破坏产生死锁的必要条件之一,严格地防止死锁的出现。

3)检测:软件检查系统中由进程贺资源构成的有向图是否构成一个或多个环路,若是,则存在死锁,否则不存在。

4)解除

  A、将陷入死锁的进程全部撤销

  B、逐个作废死锁进程,直至死锁不再存在

  C、从死锁进程中逐个地强迫抢占其所占资源,直至死锁不存在

标签:常见问题,请求,进程,死锁,防止,条件,整理,资源
From: https://www.cnblogs.com/rensonghua/p/17753785.html

相关文章

  • 死锁
    1、什么是死锁?死锁是一组互相竞争资源的线程,因为互相等待,导致的永久阻塞。2、产生死锁的原因?互斥:共享资源x和y只能被一个线程占用占有且等待:线程t1已经取得资源x,在等待资源y的时候不释放资源x不可抢占:其他线程不能强行抢占线程t1占有的资源循环等待:线程t1等待线程t2占有的......
  • 死锁和Lock锁
    死锁就是两个线程都有着一个对象的锁 然后下一步都想去拿另外一个线程的锁,因为两个线程有的锁还没解开,形成循环僵持,谁都想要另外一个线程的锁,但是又没解开自己拿到的锁。 解决办法示例: 就是可以等另外一个线程解开了锁然后再去拿锁。 Lock锁:和synchonized锁是一样的......
  • wireshak常见问题
    作者:零声Github分享官链接:https://www.zhihu.com/question/264811393/answer/2594036023来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。流媒体播放中,常常需要借助wireshark从TCP层面对交互过程进行分析,本文记录一些常见的TCP异常报文及其分析。......
  • Google Guava 库用法整理
    参考:(2,3,4)http://blog.publicobject.com更多用法参考http://ajoo.iteye.com/category/119082以前这么用:Java代码Map<String,Map<Long,List<String>>>map=newHashMap<String,Map<Long,List<String>>>();现在这么用(JDK7将实现该功能......
  • ETL安装和一些常见问题
    安装ETL需要安装Kettle和JDK1,ETL我使用的是 pdi-ce-8.3.0.0-371,可以去KETTLE官网找一下或者用 https://www.ylmfwin8.com/soft/50783.html下载的8.2版本2,ETL下载完成后,解压到本地即可(不要有中文路径)3,JDK在网上找一个即可,我使用的是JAVA8(ETL版本和JDK版本应该是有对......
  • SQL SERVER 死锁查询存储
    –execsp_who_lock查询哪个库的死锁,存储就建立在哪个库上IFEXISTS(SELECT*FROMsys.objectsWHEREobject_id=OBJECT_ID(N’[dbo].[sp_who_lock]’)ANDtypein(N’P’,N’PC’))DROPPROCEDURE[dbo].[sp_who_lock]GOcreateprocedure[dbo].[sp_who_lock]asbegindecl......
  • es整理
    参见: https://www.bilibili.com/video/BV1e24y157WS/?spm_id_from=333.788&vd_source=b879d4ff10c4ff63bbd44d7f0839ffa21.索引分为读索引和写索引,可以每天建一个写索引,并把之前的写索引改为is_write_index:false2.分片,副本,"别名+是否可写"3个概念   50.常用命......
  • PHP7 常用的魔术方法整理
    php7魔术方法有哪些?魔术方法是一种特殊的方法,当对对象执行某些操作时会覆盖PHP的默认操作。PHP保留所有以 __ 开头的方法名称。因此,除非覆盖PHP的行为,否则不建议使用此类方法名称。php7魔术方法有:__constract:在实例化一个类时,触发__destruct:在一个实例对象被销毁的......
  • 如何对RS485设备进行地址的设置? 关于485通讯常见问题
    https://www.juyingele.com/service/2199.html 如何对RS485设备进行地址的设置?单独连接一个设备时,不管设备地址是多少,都可以使用254(广播地址)进行通讯。传输方式不同、传输距离不同、RS-232只允许一对一通信。1、传输方式不同。RS-232采取不平衡传输方式,即所谓单端......
  • MySQL innoDB 间隙锁产生的死锁问题
    背景线上经常偶发死锁问题,当时处理一张表,也没有联表处理,但是有两个mq入口,并且消息体存在一样的情况,频率还不是很低,这么一个背景,我非常容易怀疑到,两个消息同时近到这一个事务里面导致的,但是是偶发的,又模拟不出来什么场景会导致死锁,只能进行代码分析,问题还原的方式去排查问题。业......