并发(二)--------------死锁

并发处理中通常需要解决的两个问题:死锁和饥饿

产生死锁的原因主要是

  1. 系统资源不足。
  2. 进程运行推进的顺序不合适。
  3. 资源分配不当等。

死锁的条件 

死锁有三个必要条件:

·1.互斥。一次只有一个进程可以使用一个资源。

2.·占有且等待。当一个进程等待其他进程时,继续占有已经分配的资源。

·3.不可抢占。不能强行抢占进程已占有的资源。

前三个条件都只是死锁存在的必要条件,但不是充分条件。对死锁的产生,还需要第四个条件:

·4.循环等待。存在一个封闭的进程链,使得每个进程至少占有此链中下一个进程所需要的一个资源。

 死锁的处理方法 

  • 死锁预防

破坏死锁的四个必要条件中的一个或多个来预防死锁。

  • 死锁检测与死锁恢复

不试图阻止死锁,而是当检测到死锁发生时,采取措施进行恢复。

(一)每种类型一个资源的死锁检测
(二)每种类型多个资源的死锁检测
(三)死锁恢复

利用抢占恢复
利用回滚恢复
通过杀死进程恢复
  • 死锁避免
  • 银行家算法:(Banker’s Algorithm)是一个避免死锁(Deadlock)的著名算法,是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避免死锁产生的算法。它以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值