第八章进程死锁

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八章进程死锁
银行家算法-原理
➢ 当进程首次申请资源时:
➢ 测试该进程对资源的最大需求量,如果系 统现存的资源可以满足它的最大需求量,则 按申请分配,否则推迟分配。
➢ 执行过程中申请:
➢ 先测试已占用的资源数与本次申请的资源 数之和是否超过该进程对资源的最大需求量 ➢ 再测试系统现存的资源能否满足该进程尚 需的最大资源量
(3)继续(1)
(4)如果找不到一个进程,满足: F>=Ri,则说明系统不安全。
(5)若所有进程都能够运行结束,则系
统安全。
第八章进程死锁
例题
➢ 教材P240 例1
第八章进程死锁
银行家算法的应用实例
现有三个进程P1、P2、P3,,共享A、B、C三类资源, 进程对资源的需求量和目前分配情况如下表:
进程
已占有资源数 最大需求数
A BC
A BC
P1
263
2 65
P2
201
2 01
P3
210
2 85
若系统还有剩余资源分别为:A类2个,B类6个,C类2个。请 回答下列问题:
(1) 目前系统是否处于安全状态?
(2)如果进程P3提出申请(0,5,2)个资源,系统是否能
为它分配资源?
第八章进程死锁
问题1:步骤一:计算F和R
第八章进程死锁
死锁产生的原因
➢ 资源分配不合理 ➢ 进程推进速度不合理。著名的哲学家问 题:
第八章进程死锁
哲学家问题
➢ 每个人必须同时拿到两根筷子才能吃到 面条。 ➢ 如果每个人都拿到了一根筷子,就永远 吃不到面条了。 ➢ 思考:哲学家之间是什么关系?如何用 信号量和PV原语实现他们之间的制约关系?
第 8 章 进程死锁
死锁的概念 死锁产生的原因 死锁的必要条件
死锁预防 死锁避免 死锁检测与解除
第八章进程死锁
死锁现象
引例:系统中有两个进程P1、P2,两份 资源S1、S2,目前状况是:
P1
S2
S1
P2
第八章进程死锁
死锁现象
➢ 进程P1拥有资源S1,进程P2拥有资源S2, 但他们都在不放弃已拥有资源的情况下, 申请对方所占有的资源。 ➢ 出现:P1和P2相互等待对方资源的现象。 ➢ 死锁:系统中的一组进程,每一个进程 都在等待另一个进程所占有的资源,使系 统处于无限期的等待状态。
将叉子编号,F1、F2、F3、F4、F5
P1:
P2:
P3:
L: P(F1) L: P(F2) L: P(F3)
P(F2)
P(F3)
P(F4)
吃面
吃面
吃面
V(F1)
V(F2)
V(F3)
V(F2)
V(F3)
V(F4)
GOTO L
GOTO L GOTO L
第八章进程死锁
按序分配的例—哲学家问题
P4: L: P(F4)
第八章进程死锁
银行家算法-数据结构
➢ 系统中总的资源 ➢ 进程运行所需的最大资源数 ➢ 已经分配的资源数 P ➢ 还需要申请的资源数 R
第八章进程死锁
银行家算法-过程
准备:计算系统中的剩余资源F;计算进 程请求资源R
(1)找到一个进程Pi,满足Ri<=F
(2)如果找到这样的进程,则将F=F+Pi
第八章进程死锁
注意:死锁讨论的范畴
➢ 不属于讨论的范畴
➢ 进程申请了不存在的资源 ➢ 申请资源最大数超过了系统拥有的最大数 ➢ 硬件故障或程序性错误引起的循环等待
➢ 假定:
➢ 任何一个进程要求资源的最大数不超过系统提供 最大数量
➢ 申请资源得到满足,一定在有限时间内完成 ➢ 只有在申请资源得不到满足时才处于等待状态
第八章进程死锁
资源分配图
r1

r2

P1
r3
••
P2
P3
r4 • • •
第八章进程死锁
用资源分配图判断死锁
➢ 如果没有环路,则一定没有死锁 ➢ 如果有环路,且环路中资源类只有一个 资源,则有死锁。 ➢ 如果有环路,但环路中资源类有多个资 源,则不一定有死锁。
第八章进程死锁
例题
假定某系统当时的资源分配图如下所示:
第八章进程死锁
死锁存在的必要条件
➢ 资源的互斥使用
S1
➢ 资源的不可抢占
P2
➢ 占有并等待(资源的
➢ 部分分配)
P1
S2
➢ 资源的循环等待。
第八章进程死锁
资源分配图
用有向图来表示进程对资源的占有情况。
➢ 顶点:进程,资源 ➢ 边:如果一个进程已经占有了一份资源,则 画一条指向进程的边。 ➢ 如果一个进程申请一份资源,则画一条指向 资源的边。 ➢ 如果同一份资源有多个,则用顶点中的圆点 数表示。
P(F5) 吃面 V(F4) V(F5) Fra Baidu bibliotekOTO L
P5: L: P(F1)
P(F5) 吃面 V(F1) V(F5) GOTO L
第八章进程死锁
8. 4 死锁避免
资源的动态分配:允许根据用户需求分 配资源,但每次分配之前都要检查系统 是否安全,如果不安全,即使有资源, 也不能分配给进程。
安全的含义:如果系统中存在着一个进 程序列,使所有的进程都能够运行结束, 则称系统是安全的。否则是不安全的。
如何判断系统是否安全?
第八章进程死锁
“不安全”与死锁的区别
➢ “不安全”并不一定发生死锁 ➢ 死锁状态集是不安全状态集的子集
不安全状态
死锁状态
第八章进程死锁
银行家算法-基本思想
➢ 一个用户对资金的最大需求量不超过银 行家现有的资金 ➢ 用户可以分期贷款,但贷款总数不能超 过最大需求量 ➢ 可以推迟支付,但总能在有限的时间内 让用户得到贷款 ➢ 当用户得到所需全部资金后,一定能在 有限的时间内归还
(1)分析当时系统是否存在死锁。 (2)若进程P3再申请R3时,系统将发生
什么变化,说明原因。
第八章进程死锁
死锁的防止
原理:打破死锁存在的四个必要条件之一。 ➢ 互斥条件:不能人为打破。 ➢ 占有并等待:
➢ 措施一:资源的静态分配。在进程运行前, 将进程所需要的所有资源分配给进程,且在整 个进程运行过程中,进程所占有资源不能被其 他进程使用。 ➢ 释放已占资源
系统当前的空闲资源为F:(2,6,2) 进程要运行结束,还需请求的资源R为:
进程 A B C P1 0 0 2 P2 0 0 0 P3 0 7 5
第八章进程死锁
死锁的防止
➢ 不可抢夺
➢ 允许抢占:资源尚未占用;进程处在等待 状态 ➢ 只有处理器、主存资源可以抢占
➢ 循环等待:
➢ 资源的按序分配。将资源编号,紧缺资源 的编号大,充裕资源的编号小。只有低编号 的资源得到满足后,才能分配高编号资源。 打破了资源的循环等待。
第八章进程死锁
按序分配的例—哲学家问题
相关文档
最新文档