有关死锁的理解

以下为个人是一些理解和读书笔记的结合..


1.什么是死锁: 进程的并发控制不仅仅要控制若干进程的同步与互斥,确保进程之间正常通信,还需要解决进程死锁问题。一旦出现进程死锁,相应的进程将无法向前推进。如果系统内的绝大多数进程或全部进程死锁,那么整个系统将处于瘫痪状态,造成系统“死机”。

2.引起死锁的主要原因: 由于进程竞争系统中的资源,而进程对资源的总需求超过系统能提供的最大资源;
3.资源的分类:

可重用性资源和可消耗性资源:
(1)可重用性资源:指某时刻仅允许一个进程使用,不能被进程消耗的,释放以后还可被其他进程使用的资源(可供用户重复多次使用的资源);
特点:a.每个资源中的单元只可分配给一个进程使用, 不允许多个进程共享;
        b.使用顺序固定: 请求资源->使用资源->释放资源;
        c.资源中单元数目固定, 进程运行期间不可创建删除;
(2)可消耗性资源:指可以在进程运行期间动态创造(生产)和撤消(消耗)的资源(又称临界资源,) 其数量不限;
特点:资源中的单元数目在进程运行期间不断变化;
     
 可抢占性资源和不可抢占性资源
(1)可抢占性资源: 某进程获得该类资源后, 可被其他进程或系统抢占; 如:优先级高的进程抢占优先级低的进程的资源;该类资源不会引起死锁;
(2)不可抢占性资源:系统将该类资源分配给进程后, 不可被其他资源抢占或系统收回, 只有待该进程用完后自动释放; 


4.死锁产生的原因:
(1)资源的竞争
(2)进程间推进顺序非法

5.产生死锁的必要条件:
(1)互斥条件:竞争的资源一次只能被一个进程使用。
(2)请求和保持条件:当一个进程占有一些资源,同时又申请新的资源,如果新资源申请失败,进程将继续占有原有资源且阻塞等待。
(3)不剥夺条件:进程已占有的资源不能被其他进程强行剥夺。
(4)环路等待条件:系统中存在一个由若干进程形成的环形请求链,其中的每一个进程均占有一些资源,同时又申请环形请求链中下一个进程所占有的资源;
前三个条件是死锁产生的必要条件,但不是充分条件;
"互斥条件"是临界资源固有的属性,保证进程互斥访问临界资源是必要的。不能因为互斥会导致死锁而禁止互斥。
“占有且等待”条件很多时候都存在,也是合理的。不可能要求进程每次申请新资源时,必须释放已占有资源。
“非剥夺”条件也是应该保留的。允许剥夺的资源是指那些,一旦剥夺中断进程的执行后,可以从断点恢复执行的资源。否则,属于非剥夺资源。

第四个条件实际上是前三个条件可能导致的结果;
只要系统出现了循环等待,则一定产生死锁;
这四个条件构成了死锁产生的充分必要条件;


6.解决死锁的方法:
  按照解决死锁的时机不同,可以分为三大类:
(1).预防死锁: 指进程申请资源部须遵循某些预先制定的限制条件,以破坏产生死锁的四个必要条件中的一个或几个,防止死锁发生。该方法严格限制了系统资源的分配和使用,会降低系统资源的利用率。
(2).避免死锁:指当进程申请资源时,需要首先判断(预测),如果满足这次资源的请求是否会导致死锁,可能导致死锁的资源请求将被拒绝,让请求资源的进程阻塞等待,直到其所需的资源可分配为止。该方法并不严格限制产生死锁的四个必要条件,以提高系统资源的利用率。
(3).检测并解除死锁:指当进程申请资源时,不进行任何限制,即允许死锁发生。但,要求系统定期或不定期检测是否有死锁发生。当检测到死锁时,在力求解除死锁。该方法进一步提高了资源利用率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值