进程的死锁

死锁的概念:

        如果系统资源有限而多个进程分配不当则会产生死锁问题。

例题:

例如上述题目中,若只有5个系统资源;

        若将5个系统资源先分配给进程A,等A执行完毕空出5个系统资源之后再分配给进程B,B执行完后再分配给C,如此逐个执行则不会发生死锁问题;

        若将5个系统资源分配给进程A2个,再分配给进程B2个,剩余1个系统资源分配给C,此时3个进程都缺少系统资源无法运行,且3个进程都因为未运行完毕而无法让出系统资源,此时进程在等待分配系统资源,而5个系统资源都已经分配,没有多余的系统资源可以分配,此时的进程持续等待,这便是死锁。

题目中问,至少需要多少个系统资源才不可能发生死锁。

        此时,若有13个系统资源,A4个,B4个,C4个,剩余的一个随便给哪个进程都能使进程运行,或者A5个,B5个,C3个,等AB运行完之后空余出系统资源C一样可以运行,所以最少需要13个系统资源。

公式:

由此可见,求至少有多少个系统资源才不会发生死锁问题的公式为:

        进程个数*(单个进程运行所需的系统资源个数-1)+1;

死锁的形成条件:

互斥:

系统资源是互斥的,同一系统资源在同一时间内只允许一个进程使用。

保持和等待:

各个进程会保持自己现在所持有的资源,并且等待更多的资源给自己。

不剥夺:

系统不会把已经分配给其他进程的资源剥夺回来重新分配。

环路等待:

死锁的预防和避免

死锁的预防:

打破上述死锁形成四大条件

死锁的避免:

1.有序的资源分配:

        将资源逐个分配给各个进程,运行完毕之后收回再分配,往往资源利用率很低

2.银行家算法:

        以银行放贷的思路来做资源分配,放资源之前首先思考是否可以收回来,收不回来便不放。

银行家算法:

分配资源的原则:

        一个进程对资源的需求量不大于系统中总资源数时可接纳该进程;

        进程可以分期请求资源,但总数仍不能超过最大需求量;

        当系统现有资源不足以满足进程尚需资源数时,可对进程的请求推迟分配,但总能使进程在有限时间内得到资源;

例题:

系统状态安全即没有死锁状态发生

答案:B

首先需求得资源 R1、R2、R3 剩余的资源数

R1=9-(1+2+2+1+1)=2

R2=8-(2+1+1+2+1)=1

R3=5-(1+1+3)=0

其次求得各进程执行完毕尚需的资源数

资源最大需求量已分配资源数还需资源数
进程R1R2R3R1R2R3R1R2R3
P1652121531
P2221211010
P3811210601
P4121120001
P5344113231

若进程P1首先运行:则资源R1、R2、R3剩余量不满足该进程尚需资源量,会发生死锁;

 若进程P2首先运行:则3类资源剩余量均满足该进程尚需资源量,可以运行;

 若进程P3首先运行:则资源R1、R3剩余量不满足该进程尚需资源量,会发生死锁;

若进程P4首先运行:则资源R3无剩余不满足该进程尚需资源量,会发生死锁;

若进程P5首先运行:则资源R2、R3剩余量不满足该进程尚需资源量,会发生死锁;

因此只能进程P2首先运行,R2运行完毕后归还资源,此时资源分配表为:

资源最大需求量已分配资源数还需资源数

当前剩余资源数

(原剩余-P2所需+P2归还)

进程R1     R2     R3R1     R2     R3R1     R2     R3R1     R2     R3
P16        5        21        2        15        3        14        2        1
P22        2        10        0        00        0        0
P38        1        12        1        06        0        1
P41        2        11        2        00        0        1
P53        4        41        1        32        3        1

 由上表可知,此时运行进程P4、P5均不会发生死锁,但一优先般运行下标小的进程,所以运行P4进程;

资源最大需求量已分配资源数还需资源数

当前剩余资源数

(原剩余-P4所需+P4归还)

进程R1     R2     R3R1     R2     R3R1     R2     R3R1     R2     R3
P16        5        21        2        15        3        15        4        1
P22        2        10        0        00        0        0
P38        1        12        1        06        0        1
P41        2        10       0        00        0       0
P53        4        41        1        32        3        1

 由上表可知,此时运行进程P5不会发生死锁,所以运行P5进程;

资源最大需求量已分配资源数还需资源数

当前剩余资源数

(原剩余-P5所需+P5归还)

进程R1     R2     R3R1     R2     R3R1     R2     R36        5        4
P16        5        21        2        15        3        1
P22        2        10        0        00        0        0
P38        1        12        1        06        0        1
P41        2        10       0        00        0       0
P53        4        40        0       00        0       0

此时再运行P1然后运行P3。

此类题目运算步较为零散,极易出错,若有空余时间当走走其他选项是否能走通 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值