死锁和银行家算法

死锁

在线程间共享多个资源时,如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁。

死锁发生的四个必要条件:互斥条件,请求和保持条件,不剥夺条件,环路等待

一:预防死锁

 A 破坏互斥条件:在有的场合下准许系统资源都能共享使用

破坏不剥夺条件 未申请到新资源时,释放已经保持的资源

二、避免死锁的算法银行家算法

当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。

 

 

posted @ 2020-09-08 16:54  小龙虾爱大龙虾  阅读(293)  评论(0)    收藏  举报