操作系统概念笔记6. 死锁

系统模型

死锁定义:当一组进程内的每个进程都在等待一个事件,而这一事件只能由这一组进程的另一个进程引起

 

死锁特征

必要条件:

互斥:资源非共享

占有并等待:一个进程占有资源并等待另一个资源,而该资源为其它进程占有

非抢占:资源不能被抢占,只能被进程完成后释放

循环等待:有一组等待进程{p0,p1…pn},p0等待p1,p1等待p2…,pn等待p0

 

死锁处理方法

预防

检测进入死锁并恢复

忽视(大多数操作系统采用的方法)

 

死锁预防

互斥:必须成立,否则不会参与死锁

持有且等待:1.每个进程在执行前申请并获得所有资源(资源利用率低)

                      2.一个进程申请更多的资源前,应释放已有资源(可能发生饥饿)

无抢占:一个进程持有资源并等待时,它以分配的资源可被抢占

循环等待:要求每个进程按递增顺序申请资源

 

死锁避免

安全序列:对于每个进程Pi,Pi仍然可以申请的资源数小于当前可用资源加上所有进程Pj(j<i)所占用的资源

  • 资源分配图算法:

       需求边Pi->Rj:进程Pi可能在某个时候申请资源Rj

       分配边Rj->Pi:进程Pi申请了资源Rj

       当进程Pi释放了资源Rj时,分配边重新变为需求边

       将申请边Pi->Rj变成分配边Rj->Pi并且不会成环时,才允许申请资源

  • 银行家算法:

       银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。

       检验系统状态是否安全:

              查找没有完成的任务,且需要的资源<=可用资源,标记其为完成,可用资源+=该任务以分配的资源

              直到所有任务都能够完成,说明系统处于安全状态

       是否允许请求资源:

              如果某个任务申请的资源<=该进程还需要的剩余资源(否则出错):

                     如果申请的资源<=可用资源(否则等待):

                            可用资源 -= 申请资源

                            该任务以分配资源 += 申请资源

                            该任务还需要的剩余资源 -= 申请资源

                            如果该状态安全,则可以执行分配;否则进程应当恢复到原来的状态并等待

 

死锁检测

找出一个未完成的任务,它申请的资源<=可用资源,标记它为完成,且可用资源 += 该任务已分配资源

如果找不到且存在任务未完成,系统死锁

 

死锁恢复

进程终止

资源抢占

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值