操作系统死锁PPT课件

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

死锁避免
安全序列: 一个进程序列{P1,…,Pn}是安全的, 如果对于每一个进程Pi(1≤i≤n), 它以后尚需要的资源量不超过系统 当前剩余资源量与所有进程Pj ( j < i )当前占有资源量之和,系统处于 安全状态 (安全状态一定是没有死锁发生的)
安全状态与不安全状态
不安全状态:不存在一个安全序列,不 安全状态一定导致死锁。安全状态一定不 会导致死锁。
• 进程通信使用的信件是一种临时性资源, 如果对信件的发送和接收不加限制,可能 引起死锁。
P1 Send(P2,S1)
Send(P1,S3)
P2
P3
Send(P3,S2)
3.5.1 死锁的基本概念
3.5.1.1 死锁的定义: 一组进程中,每个进程都无限等待被 该组进程中另一进程所占有的资源, 因而永远无法得到的资源,这种现 象称为进程死锁,这一组进程就称 为死锁进程。
P2Rel(R1)

P2Rel(R2) P2Req(R1)
P2Req(R2)
D ④
① ③
P1Req(R1)
P1Req(R2) P1Rel(R1) P1Rel(R2)
2)
若并发进程P1和P2按曲线④所示的顺序推进, 它们将进入不安全区D内。此时P1保持了资源R1, P2保持了资源R2, 系统处于不安全状态。因为,这 时两进程再向前推进,便可能发生死锁。例如, 当P1运行到P1:Request(R2)时,将因R2已被P2占用 而阻塞;当P2运行到P2: Request(R1)时,也将因R1 已被P1占用而阻塞,于是发生了进程死锁。
缺点:可能会产生等待资源的时间较长;有些 资源在拥有后可能不会使用或使用几率较小,造 成其他进程也无法申请。
死锁预防
破坏“循环等待”条件
采用资源有序分配法:
把系统中所有资源编号,进程在申 请资源时必须严格按资源编号的递 增次序进行,否则操作系统不予分 配
破坏“循环等待”条件
例如:1,2,3,…,10
(2) 避免死锁: 采取合适的资源分配策略防止其进入不安 全状态
(3) 检测死锁:允许死锁产生,但不断去检查,一旦死锁 立刻清除。
(4) 解除死锁:与检测机构配套使用,采用各种措施进行 死锁的解除。
3.6 死锁的预防
定义:
在系统设计时确定资源分配算法,保 证不发生死锁。具体的做法是破坏 产生死锁的四个必要条件之一
3.5.1.2 资源分类
* 可抢占(剥夺)资源:CPU和RAM • 不可抢占(剥夺)资源:打印机等、磁
带机等
临时性资源:只可使用一次的资源;如信 号量,中断信号,同步信号等(可消耗性 资源)
“申请--分配--使用--释放”模式
3.5.1 产生死锁的原因 (1)竞争资源。 (2) 进程间推进顺序不当。
利用银行家算法避免死锁
银行家算法 1、银行家拥有一笔周转资金 2、客户要求分期贷款,如果客户能够得
释放读卡机 释放读卡机
释放打印机 释放打印机
例2 PV操作使用不当产生死锁
进程Q1 ………
• P(S1); • P(s2); • 使用r1和r2; • V(S1); • V(S2);
进程Q2 ……… P(s2); P(s1);
使用r1和r2 V(s2); V(S1);
例3 资源分配不当引起死锁
例4对临时性资源使用不加限制引起死锁
3.5 死锁
死锁的基本概念 死锁的解决方案
(预防,避免,检测及解除) 资源分配图
例1:生活中 的交通死锁
死锁的现象
计算机中若干死锁的例子
例1进程推进顺序不当产生死锁
设系统有打印机、读卡机各一台,被进程 P和Q共享。两个进程并发执行,按下列次
序请求和释放资源:
进程P
进程Q
请求读卡机 请求打印机
请求打印机 请求读卡机
一个进程在申请新的资源的同时保持 对原有资源的占有 (只有这样才是动态申请,动态分配)
4) 循环等待
存在一个进程等待队列 {P1 , P2 , … , Pn}, 其中P1等待P2占有的资源,P2等待P3 占有的资源,…,Pn等待P1占有的资 源,形成一个进程等待环路
3.5.3 死锁的解决方案
(1) 预防死锁 事先采取措施,破坏产生死锁的四个必要条件。
P1: 申请1 申请3 申请9

P2: 申请1 申请2 申请5

P3 …… P10
死锁避免定义
定义: 在系统运行过程中,对进程发出的每 一个系统能够满足的资源申请进行动 态检查,并根据检查结果决定是否分 配资源,若分配后系统可能发生死锁, 则不予分配,否则予以分配
安全状态与不安全状态
安全状态: 如果存在一个由系统中所有进程构 成的安全序列P1,…Pn,则系统处 于安全状态
死锁预防
破坏“不可剥夺”条件 在允许进程动态申请资源前提下规定, 一个进程在申请新的资源不能立即 得到满足而变为等待状态之前,必 须释放已占有的全部资源,若需要 再重新申请。
缺点:对于打印机、外设等需要连续写的设 备来讲,可能会意味着前段时间的工作的失效。
死锁预防
破坏“请求和保持”条件
要求每个进程在运行前必须一次性申 请它所要求的所有资源,且仅当该 进程所要资源均可满足时才给予一 次性分配。
死锁(Deadlock) 饥饿(Starvation) 注意区分上述概念
关于死锁的一些结论:
➢ 参与死锁的进程最少是两个
➢ 参与死锁的进程至少有两个已经占有资源 ➢ 参与死锁的所有进程都在等待资源 ➢ 参与死锁的进程是当前系统中所有进程的子集
注:如果死锁发生,会浪费大量系统资源, 甚至导致系统崩溃。
3.5.2 产生死锁的四个必要条件
互斥使用(资源独占) 不可强占(不可剥夺) 请求和保持(部分分配,占有申请) 循环环路等待
1) 互斥使用(资源独占) 一个资源每次只能给一个进程使用
2) 不可强占(不可剥夺) 资源申请者不能强行的从资源占有者 手中夺取资源,资源只能由占有者 自愿释放
3) 请求和保持 (部分分配,占有申请)
1. 竞争资源引起进程死锁
P1百度文库
R1
R2
P2
图 3-12 I/O设备共享时的死锁情况
P1
三个进程都在以对方释放掉
信号作为自己释放信号的必
S3
S1
备条件,从而形成了互相的
等待,造成死锁。
P3
P2
S2
图 3-13 进程之间通信时的死锁
2. 进程推进顺序不当引起死锁 进程推进线
1) 进程推进顺序合法
图 3-14 进程推进顺序对死锁的影响
相关文档
最新文档