首页计算机计算机软件操作系统 07 第七章 死锁.pptx

07 第七章 死锁.pptx

页数:20页文件大小:192.6 KB来源: 操作系统ppt课件

本课件系统讲解操作系统中的死锁问题。先给出死锁的定义、产生环境与两大原因,说明互斥、不可抢占、部分分配与循环等待四个必要条件;随后介绍破坏部分分配条件的预先静态分配法和破坏循环等待条件的有序资源使用法;接着重点展开死锁避免的银行家算法,用单种资源与多种资源两类实例演示安全性判断;最后讲解资源分配图化简的死锁检测方法与撤消进程的死锁恢复措施。

第七章死锁章节页,列出死锁的概念、必要条件、预防、避免、检测与恢复各项内容
死锁定义页,说明死锁是进程无限期等待永远不会发生的条件,起因于资源不足与推进顺序不当
资源分类页,按分配方式、使用方式与使用期限划分可抢占与不可抢占、共享与独占资源
查看本课件的文字版(共 20 页,供检索与复制)

第1页:第七章 死锁

第七章 死锁

  • 何为死锁?
  • 死锁的必要条件:四条
  • 死锁的预防:预先静态分配法、有序资源使用法
  • 死锁的避免:银行家算法
  • 死锁的检测:资源分配图
  • 死锁的恢复:强制性撤消进程、挂起和解挂机构

第2页:7.1 死锁问题的提出

死锁
计算机系统中两个或多个进程无限期地等待永远不会发生的条件,称此系统处于死锁状态
环境
某些资源互斥地使用
原因
(1)系统资源不足;(2)进程推进的顺序不合适

本页还以甲、乙两个进程竞争输入机与打印机的进展路径图说明死锁点:两进程分别占用输入机与打印机后进入危险区,再各自申请对方已占用的资源,便进入禁区形成死锁。

第3页:7.2 死锁的必要条件:资源的概念

资源的概念

按分配方式
“可抢占”资源(如 CPU、内存);“不可抢占”资源(如打印机、软驱、光驱)
按使用方式
“共享”资源(如 CPU、内存、硬盘);“独占”资源(如打印机、软驱、光驱)
按使用期限
永久资源、临时资源(如数据、消息、信号等)

资源的共同性质:一个进程由于请求一个资源而未被满足,从而该进程被阻塞。

定义:一个逻辑资源(简称资源)是指可以引起一个进程进入等待状态的事物。

第4页:死锁的必要条件

死锁的必要条件(注意:不是充分条件)

  • 互斥条件:一个资源一次只能被一个进程所使用
  • 不可抢占条件:一个资源仅能被占有它的进程所释放,而不能被别的进程强行抢占
  • 部分分配条件:一个进程已占有了分给它的资源,但仍然要求其它资源
  • 循环等待条件:存在一个进程等待的循环链

第5页:防止死锁发生(破坏条件之一)

防止死锁发生:破坏死锁必要条件之一
死锁的必要条件防止死锁发生的方法
互斥条件允许多个进程同时访问资源(不现实)
不可抢占条件强迫进程暂时释放资源给其它进程(代价大)
部分分配条件“预先静态分配法”
循环等待条件“有序资源使用法”

第6页:7.3 死锁的预防之一:预先静态分配法

策略:作业调度时,仅当系统满足作业运行时所需的全部资源时,才把该作业调入内存运行。在作业运行前一次性将其所需的全部资源分配给它,于是在作业运行过程中不再会提出新的资源要求。

该方法破坏“部分分配条件”,实现简单,但资源利用率低,且可能因资源不足使作业长期推迟。

第7页:死锁的预防之二:有序资源使用法

有序资源使用法(破坏循环等待条件)的策略

  1. 把系统中的全部资源分别分给一个特定的序号,对于同一种类的资源,必须一次申请完
  2. 申请不同种类的资源时,应严格按照序号递增的次序申请
  3. 实际分配资源时,检查本次申请是否满足序号递增的要求

第8页:有序资源使用法的优缺点

优点
基于动态分配方法,资源利用率较前法提高,无须预先说明各类资源的最大申请量
关键
小心安排资源序号
问题
各类资源序号一经安排,不宜经常地随意改动;序号安排不当会限制用户对资源的使用顺序

第9页:7.4 死锁的避免和银行家算法

预防
破坏死锁必要条件之一,保证死锁不发生(限制条件较强,实现简单,但严重损害了系统性能)
避免
不严格限制必要条件(限制条件较弱,可能获得满意结果)
安全状态
指系统按某种进程顺序(如 P1、P2、…、Pn)为每个进程分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利完成;这样的进程序列称为安全序列

第10页:银行家算法

问题
一个银行家在若干个顾客间共享他的资金(capital),每个顾客所需借款总额 need ≤ capital
任务
银行家应能使他当前的全部顾客在有限时间内完成他们的交易(也就归还了他们的借款)
实质
每次分配前先试算,只有在分配后系统仍处于安全状态时才真正实施分配

第11页:单种资源银行家算法

单种资源银行家算法示例:时刻 a(可用 10,状态:安全)
顾客已使用仍要求数
Andy06
Barbara05
Marvin04
Susan07
单种资源银行家算法示例:时刻 b(可用 2,状态:安全)
顾客已使用仍要求数
Andy15
Barbara14
Marvin22
Susan43
单种资源银行家算法示例:时刻 c(可用 1,状态:不安全)
顾客已使用仍要求数
Andy15
Barbara23
Marvin22
Susan43

第12页:T0时刻系统状态与安全序列

T0 时刻系统状态(可用资源 3)
进程最大需求已分配仍需要
P11055
P2422
P3927

T0 时刻系统安全,因为存在安全序列(P2,P1,P3):给 P2 分配 2 个单位资源,P2 完成后释放 4 个单位的资源,则可用资源数为 5 个;给 P1 分配 5 个单位资源,P1 完成后释放 10 个单位资源,则可用资源数为 10 个;给 P3 分配 7 个单位资源,P3 完成后释放 9 个单位资源,则可用资源数为 12 个。

若 T0 时刻 P3 请求分配 1 个单位并分给它,则可用资源剩 2 个单位;分配给 P2 后完成释放 4 个,此后 P1 和 P3 均因得不到足够的资源而等待——死锁!因此该请求不能满足,P3 将因资源请求未满足而阻塞。

第13页:多种资源银行家算法:T0时刻资源分配

系统中有五个进程 {P0,P1,P2,P3,P4} 和三种资源 {A,B,C},每一种资源的数量分别为 10、5、7。T0 时刻的资源分配情况如下:

T0 时刻资源分配情况(资源总量 A=10,B=5,C=7;Available 为 3、3、2)
进程Max AMax BMax CAllocation AAllocation BAllocation CNeed ANeed BNeed C
P0753010743
P1322200122
P2902302600
P3222211011
P4433002431

T0 时刻存在安全序列(P1,P3,P4,P2,P0),系统处于安全状态。

第14页:P1 请求资源的安全性检查

P1 请求资源 Request(1,0,2),试探分配后 Available 变为(2,3,0),各进程的 Allocation 与 Need 如下:

P1 请求 Request(1,0,2) 后的资源分配情况(Available 为 2、3、0)
进程Max AMax BMax CAllocation AAllocation BAllocation CNeed ANeed BNeed C
P0753010743
P1322302020
P2902302600
P3222211011
P4433002431

此时仍存在安全序列(P1,P3,P4,P2,P0),系统处于安全状态,故该请求可以分配。

第15页:P0 再请求资源的安全性检查

P0 再请求资源 Request(0,2,0),试探分配后 Available 变为(2,1,0),各进程的 Allocation 与 Need 如下:

P0 请求 Request(0,2,0) 后的资源分配情况(Available 为 2、1、0)
进程Max AMax BMax CAllocation AAllocation BAllocation CNeed ANeed BNeed C
P0753030723
P1322302020
P2902302600
P3222211011
P4433002431

此时找不到任何安全序列,系统进入不安全状态,故该请求不能满足,P0 必须等待。

第16页:7.5 死锁检测

条件
允许死锁必要条件存在,也不采用避免死锁的算法(提高资源利用率)——故死锁可能发生,需检测
定义
实际地检查系统中是否存在死锁,并标出哪些进程和资源被牵扯在死锁中
应用
允许前三个死锁的必要条件存在,系统定期进行检测并在检测到死锁时加以解除

第17页:资源分配图化简

化简
一个进程的所有资源要求均能被满足,则该进程得到其所需全部资源从而不断取得进展,直至完成全部任务并释放出全部资源
方法
在有向图中找到既非阻塞又非孤立的结点,分配它所需的全部资源后,当它继续执行并完成,然后消去它的全部请求边与分配边,使之成为孤立结点

第18页:资源分配图化简示例(两进程)

资源分配图化简示例(两个进程):本页以图示方式展示 P1、P2 依次被化简为孤立结点的过程,说明该图可完全化简,系统未发生死锁。

第19页:资源分配图化简示例(三进程不可化简)

资源分配图化简示例(三个进程):本页以图示方式展示 P1、P2、P3 构成的资源分配图无法找到可化简的结点,故该图不可化简,系统中存在死锁。

第20页:7.6 死锁恢复

死锁恢复:强制性地从系统中撤消进程并剥夺它们的资源给剩下的进程使用。

撤消进程的原则

  • 进程的优先数
  • 重新启动它并运行到当前撤消点所需的代价
  • 作业的外部代价:即与此进程相关的作业类型都可以有其相应的固定撤消代价
顶部目录