2.5 - 死锁

一、死锁

1、概念

  • 两个或者两个以上的进程,相互需要对方的资源,但是又不释放自己的资源,导致无法运行下去的情况。
  • 例如卖家不拿到钱就不给买家货,买家不拿到货就不给卖家钱,导致生意无法进行。

2、产生死锁的四个条件

  • 互斥
  • 保持和等待
  • 不剥夺
  • 环路等待

3、死锁的预防

  • 打破产生死锁的四个条件中的任意一个。
  • 例如买卖案例中,买家直接剥夺了卖家的货,然后把钱给卖家,卖家拿到钱就打破了死锁。

4、死锁的避免

  • 有序资源分配法
  • 银行家算法
思想
在把资源分配出去之前先分析资源分配出去是否是安全的。也就是说给进程分配资源之前会先衡量系统是否会进入不安全的状态,如果系统会进入不安全的状态,则不给进程分配资源;如果存在安全的序列,也就是系统处于安全状态,则给进程分配资源。
安全状态
系统里面的这些进程,能按照某一个次序,依次执行下去,存在这样的一个序列,我们九城系统是安全的。
举例说明          
就下面的例子来说,银行将资金分配给项目之前,会先判断资金是否会进入不安全状态,发现当项目能否按照特定的顺序依次完成时(2), 资金就处于安全的状态,所以银行会将资金分配给项目。
(1)如果即将银行的50万分配给项目2或者项目3,三个项目依然无法运行,银行的钱也收不回来了,就变成死锁了。
(2)如果将银行的钱给项目1,项目1就有150万了,就能正常运行了,项目1完成后银行可以收回150万,再分配给项目3,项目三就有300万了,也可以正常运行了,项目3运行完成后,银行可以收回300万,再分配给项目2 200万,项目2有400万了也可以正常运行,项目2运行完成之后银行可以收回400万,至此银行的500万就全部收回了。整个运行过程不会形成死锁。

5、系统不发生死锁的资源计算(常考)

  • 给系统中每一个进程分配所需最大资源少一个后,系统还剩一个资源,就不会发生死锁。
  • 举例说明
P1共需4个资源,P2共需3个额资源,P3共需5个资源。给P1分配3个资源,P2分配2个资源,P3分配4个资源,还剩一个资源,系统就不会死锁。所以系统有10个资源时,系统就不会产生死锁。

二、考点1:不发生死锁的最小资源数计算

三、考法2:银行家算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值