当前位置:文档之家› 第三章第八节--死锁

第三章第八节--死锁

➢ 不安全状态一定导致死锁
24
3.安全序列 ➢ 一个进程序列{P1,…,Pn}是安全的
如果对于每一个进程Pi(1≤i≤n),它以 后尚需要的资源量不超过系统当前剩余资源量 与所有进程Pj (j < i )当前占有资源量之和, 系统处于安全状态 ➢ 安全状态一定是没有死锁发生的
25
安全状态之例
➢ 假定有3个进程P1、P2和P3,12台磁带机 ➢ 系统在T0时刻的状态如下表所示
18
3.破坏环路等待条件 ➢ 方法:将所有资源按类型线性编号
按序号递增的次序请求资源 按序号递减的次序释放资源 优点:资源利用率和系统吞吐量提高 缺点:限制了新设备类型的增加 申请的资源闲置造成浪费 限制用户简单、自主地编程
19
4.互斥条件不仅不应破坏还要保持 因为资源的互斥使用是由资源本身的属
V--结点集,分为P,R两部分 P={p1,p2,…,pn}, R={r1,r2,…,rm}
E--边的集合,其元素为有序二元组 <pi,rj>或<rj,pi>
4
➢ 资源分配图(RAG)的表示 ✓ 资源类:用方框表示 ✓ 资源实例:用方框中的黑圆点表示 ✓ 进程 :用圆圈中加进程名表示 ✓ 分配边:资源实例进程 ✓ 申请边:进程资源类
进程 P1 P2 P3
最大 需求
10 4 9
已分 配
5 2 2
可用 3
26
由安全状态向不安全状态的转换
➢ 如果不按照安全序分配资源,则系统可能会由安全 状态进入不安全状态
➢ T0时刻以后,P3又请求1台磁带机,若把剩余3台中
的1台分配给P3,则系统便进入不安全状态 ➢ 若把其余的2台分配给P2,这样,在P2完成后只能释 放出4台,既不能满足P1尚需5台的要求,也不能满足 P3尚需6台的要求,致使它们都无法推序设计
第8节 死锁
主讲教师:林韩辉
内容提要
死锁的原因和必要条件 预防死锁 发现死锁 解除死锁
2
一、死锁的基本概念
1.资源分配图
➢ 资源类和资源实例 ✓ 系统中的一类资源称为一个资源类 ✓ 每个资源类中的一个资源称为一个资源实例
3
➢ 资源分配图(RAG)的定义 RAG=(V,E)
14
处理死锁的基本方法
1.预防死锁
➢ 通过破坏产生死锁的四个必要条件的一个或几个
防止死锁的发生
➢ 施加的限制条件可能导致系统资源利用率和
系统吞吐量的降低
2.避免死锁
➢ 在资源的动态分配过程中,防止系统进入不安全
状态,从而避免死锁的发生
➢ 限制条件较弱,系统资源利用率和系统吞吐量较高,
但实现比较困难
性决定的,不能够改变资源属性就应该按照要 求使用资源
20
(二) 安全状态与不安全状态 1.死锁的避免
➢ 死锁预防策略所施加的限制条件严重地损害 了系统性能
➢ 要施加较弱的限制条件,通过避免系统进入 不安全状态来避免死锁,从而获得较满意的系 统性能
21
➢ 死锁避免的策略允许进程动态地申请资源 ➢ 资源分配前先计算资源分配的安全性: ✓ 若此次分配不会导致系统进入不安全状态,
则将资源分配给进程 否则,进程等待 ✓ 最具有代表性的死锁避免算法是银行家 算法
22
2.安全状态与不安全状态 ➢ 安全状态
指系统能按某种进程顺序来为每个进程 分配其所需资源,直至最大需求,使每个进程 都可顺序完成
➢ 不安全状态 若系统不存在一个安全序列,则称系统
处于不安全状态
23
安全状态与不安全状态
7
竞争系统资源 ➢ 系统资源类型
✓ 永久性资源(可再用资源)
可抢占资源:例 内存、CPU、磁盘 不可抢占资源:例 打印机、磁带机 ✓ 临时性资源(可消耗性资源) 只可使用一次的资源 例:信号量、中断信号、同步信号等
8
P1
R1
R2
P2
I/O设备共享时的死锁情况
P1
S3
S1
P3
P2
S2
图 3-13 进程之间通信时的死锁
4.产生死锁的必要条件
1.互斥条件
进程对占有的资源进行排他性使用
2.请求和保持条件
部分分配策略中,进程占有资源却又申请新的资源
3.不剥夺条件
对已经分配给进程的资源不可强占使用
4.环路等待条件
发生死锁时,系统的RAG必然出现环路
13
➢ 说明
✓ 发生死锁时,四个必要条件一定同时具备 ✓ 具备四个必要条件未必发生死锁 ✓ 各条件之间是有联系的
5
2.死锁的定义
➢ 指多个进程因竞争共享资源而造成的一种僵 局,若无外力作用,这些进程都将永远不能 再向前推进
➢ 即:一组进程中,每个进程都无限等待被该 组进程中另一进程所占有的资源,因而永远 无法得到的资源,这种现象称为进程死锁, 这一组进程就称为死锁进程
6
3.产生死锁的原因
竞争系统资源(系统提供的资源不能 满足每个进程的使用) ➢ 竞争永久资源 ➢ 竞争临时资源 进程的推进顺序不当(多道)
通过破坏死锁的四个必要条件之一预防死锁 1.破坏请求和保持条件(资源独占)
方法:资源一次性分配 优点:简单、安全 缺点:资源浪费严重
进程延迟运行
17
2.破坏不剥夺条件(资源受控动态分配) 方法:已保持资源的进程提出新的资源请求 而未能满足时,必须释放占有的资源 缺点:造成资源使用的不连续 造成进程的“饿死”状态 延长进程的周转时间
➢ 可导致死锁的因素(资源方面) ✓ 竞争不可抢占的永久资源 ✓ 竞争临时性资源
➢ 竞争可抢占资源不会导致死锁
进程推进顺序不当引起死锁
P2Rel(R1) P2Rel(R2) P2Req(R1)
P2Req(R2)

D ④
① ③
P1Req(R1)
P1Req(R2) P1Rel(R1) P1Rel(R2)
15
3.检测死锁
➢ 不采用任何限制条件,允许发生死锁 ➢ 死锁检测机构能够快速检测死锁的存在 ➢ 检测遵循死锁定理
4.解除死锁
➢ 与死锁检测相配套的一种措施 ➢ 一旦检测到死锁的存在,通过手段解除死锁 ➢ 保证系统有好的资源利用率和系统吞吐量 ➢ 实现难度比较大
16
二、 死锁的预防和避免
(一) 死锁的预防
27
例子:利用银行家算法避免死锁
1.银行家算法中的数据结构 ➢ 可用资源向量Available[m] ✓ 每一个元素代表一类可利用的资源数目 ✓ 初始值是系统中所配置的各类全部可用资源 ✓ 的数目 ✓ 其值随资源的分配和回收而动态地改变 ✓ Available[j]=K:表示有Rj类资源K个
相关主题