第三章死锁
1、资源
2、概念
3、死锁的预防
4、死锁的避免
5、死锁的检测和恢复
6、处理死锁的⽅式
资源使⽤模式
申请
使⽤
释放
可抢占资源 另外进程可以从拥有它的进程那⾥把它抢占过去占为⼰有,并不会产⽣不良影响
不可抢占资源 不能从当前占有它的进程那⾥抢占资源,必须由拥有者主动释放,否则会引起相关计算的失效
死锁和你不可抢占资源有关
死锁:在一个进程集合中的每个进程都在等待仅由该集合中的另一个进程才能引发的事件⽽⽆限期的僵持吃下去的局⾯
产⽣死锁的根本原因是资源有限且操作不当
资源太少,不能满⾜并发进程对资源的需求
进程推进顺序不合适引发
死锁的条件
互斥条件 独占资源在一段时间内只能由一个进程占有,不能同时被两个及其以上的进程占有
占有且等待条件 进程⾄少占有一个资源,但⼜申请新的资源
不可抢占资源 一个进程所占有的资源在⽤完前,其他进程不能抢⾛该资源,只能由该进程完成之后主动释放
循环等待条件
资源分配图
由资源指向进程的边叫付给边,由进程指向资源的边叫申请边
如果资源分配图中没有环路,那么系统不会陷⼊死锁状态。如果存在环路,那么系统有可能存在死锁,但不确定
破坏占有且等待条件
预分资源策略 在每一个进程开始执⾏之前就申请并分到所需的资源,从⽽它在执⾏的过程中就不需要申请另外的资源
空⼿申请资源策略 每个进程在它不占有资源时才可以申请资源
破坏⾮抢占条件
隐式抢占⽅式
抢占等待者资源
破坏循环等待条件
安全序列系统按照某种次序为每个进程分配资源,使他们依次成功的运⾏完毕
正确写出安全序列
恢复
通过抢占资源恢复临时性的把资源从当前占有它的进程那⾥拿过来,分给另外某些进程
通过回退执⾏恢复由系统管理员做出安排
通过杀掉进程恢复
终⽌所有的死锁进程
一次终⽌一个进程
饥饿某个或某些进程永远得不到完成⼯作的机会,因为他们所需要的资源总被别的进程占有或抢占
活锁一个或多个进程轮询的等待某个不可能为真的条件为真