死锁相关

死锁定义:如果一个集合内多个进程在运行过程中都在等待只能由集合内其他进程释放的资源,则在无外力作用下,这些进程将永远相互等待,即死锁。

产生死锁的四个必要条件:

互斥条件:进程互斥的使用资源(资源独占性);占有和等待条件(部分分配条件):申请新资源时不释放已占有资源;不剥夺条件:一个进程不能抢占其他进程占有的资源;循环等待条件:存在一组进程循环等待资源的现象;

死锁的解决办法有:死锁预防、死锁避免、以及死锁检测与接触;

一般是破坏第二个和第四个条件为多数,第二个占有和等待条件,即是一种静态分配策略,指一个进程在执行前必须申请到它所需求的全部资源,并且知道它所需求的资源均满足后才开始执行。

层次分配策略:资源被分成多个层次;当进程得到某一层的某个资源,再申请资源只能向较高层次申请;当进程释放资源时,必须先释放占有的较高层次资源。当进程申请到某一层的某个资源后,若还想申请该层的其他资源,必须先释放该层中的已占有资源。层次分配策略属于死锁预防。破坏第四个条件、循环等待资源。

也可以一次性分配,破坏占有和等待条件。破坏不剥夺条件会有不安全性。

死锁避免:银行家算法

1、在收到进程的资源申请后,先把资源试探性分配给它;

2、系统用剩下的可用资源和进程集合中其他进程还要的资源数作比较,在进程集合中找到剩余资源能满足最大需求量的进程,从而保证这个进程运行完毕并归还全部资源;

3、将2中进程从进程集合中去掉,系统的剩余资源变多,反复执行上述步骤;

4、检查进程集合,若为空则表明本次申请可行,系统处于安全状态;否则本次申请不实施,阻塞进程。

例:总共资源12,p1申请10,p2申请4,p3申请9,分别已分配5、2、2;剩余资源3,先比较3和三个进程还需要的资源数,p2还需要2,小于3,那么分配,p2结束后剩余资源变为5;在循环,则p1还需要5符合条件,分配,剩余资源为10,p3明显可以满足,所以存在安全状态p2->p1->p3;

安全状态、不安全状态与死锁状态的关系:并非所有不安全状态都是死锁状态,只是可能为死锁状态;只要系统处于安全状态,则可避免进入死锁状态。

死锁检测与接触:资源分配图

存在环路不一定出现死锁,如果涉及的资源数量只有1,那么便是死锁。

如果资源分配图不可完全简化,则必定发生了死锁。

资源分配图中入边表示该进程获得资源;出边表示进程申请资源;对于资源节点,入边表示申请,出边表示给出的资源;

资源分配图应该先看每种资源还有多少剩余,然后再逐个看进程申请的资源,将满足条件的进程的边全部删去,循环往复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值