死锁问题

定义:

死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,若无外力作用, 这些进程都将无法再向前推进。


 产生死锁的原因:


产生死锁的原因可归结为如下两点:
      (1) 竞争资源。当系统中供多个进程共享的资源数目不足以满足诸进程的需要时,会引起资源的竞争而产生死锁。
      (2) 进程间推进顺序非法。进程在运行过程中,请求和释放资源的顺序不当,也同样会导致产生进程死锁。

资源问题


    1. 可重用性资源和消耗性资源


  1) 可重用性资源


  可重用性资源是一种可供用户重复使用多次的资源,它具有如下性质:
  
(1) 每一个资源中的单元只能分配给一个进程。
  
(2) 使用时,须按照顺序:① 请求 ② 使用 ③ 释放。
  
(3) 可重用性资源中的单元数目是相对固定的。


      2) 可消耗性资源(临时性资源


  进程运行期间,由进程动态地创建和消耗。它具有如下性质:

       ① 单元数目在进程运行期间不断变化

       ② 运行过程中,可以不断地创造

       ③ 运行过程中,请求的资源单元不再返回给该资源类中。

可抢占性资源和不可抢占性资源


  1) 可抢占性资源


  可把系统中的资源分成两类,一类是可抢占性资源,是指某进程在获得这类资源后,该资源可以再被其它进程或系统抢占。


  2) 不可抢占性资源


  另一类资源是不可抢占性资源,即一旦系统把某资源分配给该进程后,就不能将它强行收回,只能在进程用完后自行释放。

计算机系统中的死锁


1. 竞争不可抢占性资源引起死锁

  通常系统中所拥有的不可抢占性资源其数量不足以满足多个进程运行的需要,使得进程在运行过程中,会因争夺资源而陷入僵局。例如共享文件时的死锁。

2. 竞争可消耗资源引起死锁

      例如:进程之间,在利用消息通信机制进行通信时所形成的死锁

3. 进程推进顺序不当引起死锁

  除了系统中多个进程对资源的竞争会引发死锁外,进程对资源进行申请和释放的顺序是否合法也是一个重要因素。

 死锁的必要条件和处理方法   

 
  1. 产生死锁的必要条件

  死锁必须同时具备下面四个必要条件:
  
(1) 互斥条件。  (2) 请求和保持条件。
  
(3) 不可抢占条件。  (4) 循环等待条件。


  2. 处理死锁的方法

  目前处理死锁的方法可归结为四种:
  
(1) 预防死锁。  (2) 避免死锁。
  
(3) 检测死锁。  (4) 解除死锁。
 

预防死锁

预防死锁的方法是通过破坏产生死锁的四个必要条件(主要是后三个条件)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redisson是一个基于Redis的Java驻留内存数据网格(In-Memory Data Grid)和分布式锁框架。在使用Redisson时,可能会遇到死锁问题死锁是指两个或多个线程在互相等待对方释放资源的情况下无限期地阻塞的现象。在Redisson中,死锁问题通常发生在分布式锁的使用过程中。 造成Redisson死锁问题的原因可能有以下几点: 1. 程序逻辑错误:在使用分布式锁时,如果程序逻辑不正确,可能会导致死锁。例如,一个线程获取了锁但没有释放,导致其他线程无法获取锁而陷入死锁状态。 2. 锁超时设置不合理:在使用Redisson分布式锁时,可以设置锁的超时时间。如果超时时间设置过长,可能会导致其他线程长时间等待而出现死锁。 3. 高并发场景下的竞争:在高并发场景下,多个线程同时请求获取锁,可能会导致竞争激烈,从而增加了死锁的风险。 为了避免Redisson死锁问题,可以采取以下措施: 1. 合理设计程序逻辑:确保在获取锁后及时释放锁,避免出现死锁情况。 2. 设置合理的锁超时时间:根据实际业务需求,设置适当的锁超时时间,避免长时间等待而导致死锁。 3. 使用可重入锁:Redisson提供了可重入锁(ReentrantLock)的实现,可以避免同一个线程重复获取锁而导致死锁。 4. 使用RedLock算法:RedLock是Redisson提供的一种分布式锁算法,可以在多个Redis节点之间协作,提高分布式锁的可靠性和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值