银行家算法-四川大学

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

统可能发生死锁,则不予分配,否则予以分配。

预防死锁的几种策略,会严重地损害了系统性能。
因此要施加较弱的限制,从而获得较满意得系统
性能来避免死锁。
2018/9/6
《计算机操作系统》- 第5章
24/66
死锁避免

由于在避免死锁的策略中,允许进程动态地申请 资源。因而,系统在进行资源分配之前预先计算 资源分配的安全性。若此次分配不会导致系统进 入不安全状态,则将资源分配给进程;否则,进 程等待。
2018/9/6
处理死锁的基本方法

预防死锁:

破坏必要条件,消除“占有并请求条件”或“环路等待条件”。 但是,这样破坏死锁会引起系统的资源利用率低。 合理的调节各并发进程的资源分配和推进顺序 银行家算法、安全性算法

避免死锁:



检测死锁:资源分配图、死锁定理
2018/9/6 《计算机操作系统》- 第5章 29/66
3.银行家算法-数据结构

Max:最大需求矩阵 这是一个n×m 的矩阵,它定义了系统中n 个进程中的每一个进程对m类资源的最大需 求; 如果Max[i, j] = K,则表示进程i需要Rj类 资源的最大数目为K。
2018/9/6
《计算机操作系统》- 第5章

资源一次性分配--破坏请求和保持条件。 可剥夺资源--即当某进程新的资源未满足时,释 放已占有的资源,破坏不可剥夺条件。

资源有序分配法--系统给每类资源赋予一个编号, 每一个进程按编号递增的顺序请求资源,释放则 相反,破坏环路等待条件。
《计算机操作系统》- 第5章 22/66
2018/9/6
2018/9/6
《计算机操作系统》- 第5章
7/66
5.1.1 死锁产生的原因

竞争系统资源

进程的推进顺序不当
2018/9/6
《计算机操作系统》- 第5章
8/66
死锁产生原因:①竞争系统资源

若系统中只有一台打 印机R1和一台读卡 机R2,可供进程P1 和P2共享。若形成环 路,这样会产生死锁。

解除死锁:以最小代价恢复系统,撤销或挂起死锁进程,回
收资源,重新分配给其他请求资源并处于阻塞状态的进程
2018/9/6
《计算机操作系统》- 第5章
18/66
5.1.4 资源分配图

用于描述进程已经分配和正在请求的资源。 通过对资源分配图中各进程资源分配情况的 分析,可以判别是否具备死锁发生的条件。
30/66
3.银行家算法-数据结构

Allocation:分配矩阵 这也是一个n×m 的矩阵,它定义了系统中 每一类资源当前已分配给每一进程的资源数; 如果Allocation[i, j] = K,则表示进程i当前 已分得Rj类资源的数目为K。
2018/9/6
《计算机操作系统》- 第5章
31/66
P1
P2 P3
2018/9/6
10
4 9
5
2 2
3
《计算机操作系统》- 第5章
27/66
②安全状态到不安全状态的转换

如果不按照安全序分配资源,则系统可能会由安 全状态进入不安全状态。

例如,在T0时刻以后,P3又请求1台磁带机,若 此时系统把剩余3台中的1台分配给P3,则系统便 进入不安全状态。 因为,此时无法再找到一个安全序列(例如,把 其余的2台分配给P2。这样,P2完成后只能释放出 4台,既不能满足P1尚需5台的要求,也不能满足 P3尚需6台的要求),致使它们都无法推进,彼此 都等待对方释放资源,陷入僵局,导致死锁。
《计算机操作系统》- 第5章 28/66

2018/9/6
3.银行家算法-数据结构

Available:可利用资源向量
这是一个含有m个元素的数组,其中的每一个元 素代表一类可利用的资源数目;
其初始值是系统中所配置的该类全部可用资源的 数目,其数值随该类资源的分配和回收而动态地改 变;
如果Available[j] = K,则表示系统中现有Rj类资 源K个。
配 分
P1
请 求
R1
R2




P2
2018/9/6
《计算机操作系统》- 第5章
9/66
死锁产生原因:①竞争系统资源
T1 T2
申请扫描仪 扫描仪
申请打印机
申请打印机 (阻 塞 )
打印机
申请扫描仪 (阻 塞 )
2018/9/6
《计算机操作系统》- 第5章
10/66
死锁产生原因:②推进顺序不当
P2Rel(R1) P2Rel(R2) P2Req(R1) P2Req(R2) D 4 3 1 2
2018/9/6
《计算机操作系统》- 第5章
14/66
5.1.2 死锁产生的必要条件

互斥条件(资源独占) 请求和保持条件(部分分配,占有申请) 不剥夺条件(不可强占) 环路等待条件
一个进程得到资源并再请求资 源时,请求的资源不能得到, 这四个条件是死锁发生的必要条件,进程必须同时具备这 已得到的资源也不会释放。 四个条件才会发生死锁。其中任意一条不满足,都不会发

本章目录



5.1 5.2 5.3 5.4 5.5
死锁的产生 死锁预防 死锁避免 死锁的检测和解除 线程死锁
2018/9/6
《计算机操作系统》- 第5章
3/66
死锁知识铺垫-基本概念

死锁是多个进程因竞争共享资源而造成的一 种僵局,若无外力作用,这些进程都将永远 不能再向前推进。

即:一组进程中,每个进程都无限等待被该 组进程中另一进程所占有的资源,因而永远 无法得到的资源,这种现象称为进程死锁, 这一组进程就称为死锁进程。



若系统不存在这样一个序列,则称系统处于不安 全状态。
《计算机操作系统》- 第5章 26/66
2018/9/6
①安全状态的例子
假定系统中有三个进程P1、 P2和P3,共有12台磁带机。
进程 P1 总共要求 10 台磁带机, P2 和 P3 分别要求 4 台和 9 台。 假设在T0时刻,进程P1、P2和P3已分别获得5台、2台和2台 磁带机,尚有3台空闲未分配,如下表所示: 进程 最大需求 已分配 可用
P1Req(R1) P1Req(R2) P1Rel(R1) P1Rel(R2)
2018/9/6 《计算机操作系统》- 第5章 11/66
死锁产生原因:②推进顺序不当

在进程P1和P2并发执行时,按照上图曲线 ①②③所示顺序推进时,两进程会顺利完 成,我们称这种推进顺序是合法的。 若按曲线④的顺序推进时,进入不安全区 D内,两进程再推进会产生死锁。

2018/9/6
《计算机操作系统》- 第5章
20/66
本章目录



5.1 5.2 5.3 5.4 5.5
死锁的产生 死锁预防 死锁避免 死锁的检测和解除 线程死锁
2018/9/6
《计算机操作系统》- 第5章
21/66
预防死锁的方法

在系统设计时确定资源分配算法,保证不发 生死锁。具体的做法是破坏产生死锁的四个 必要条件之一。

其中最具有代表性的避免死锁算法是
银行家算法。
2018/9/6 《计算机操作系统》- 第5章 25/66
2.安全状态与不安全状态

安全状态指系统能按某种进程顺序来为每个进程 分配其所需资源,直至最大需求,使每个进程都 可顺序完成。 安全序列
一个进程序列{P1,…,Pn}是安全的,如果对于每 一个进程Pi(1≤i≤n),它以后尚需要的资源量不超过 系统当前剩余资源量与所有进程Pj (j < i )当前占有 资源量之和,系统处于安全状态。 安全状态一定是没有死锁发生的
操作系统原理
Operating System Principles
四川大学计算机学院
段 磊 leiduan@
2014 Spring
第5章 死 锁
并发进程竞争使用资源,如果同步措施不恰当,容 易导致死锁现象。 操作系统除了需要预防死锁、避免死锁外,还需要 能够检测死锁,并从死锁中进行恢复。

进程顶点用圆圈表示,资源顶点用方块表示, 方块中的一个点表示一个资源。有向线段连 接进程到资源。箭头从进程指向资源,表示 进程正在等待资源;箭头从资源指向进程, 表示进程已经获得资源。
《计算机操作系统》- 第5章 19/66
2018/9/6
资源分配图

如果资源分配图中没有构成环,则不存在死 锁; 如果构成环,且死锁发生必要条件的其他三 个条件(主要是占有并等待条件,因为互斥 条件和不剥夺条件肯定是具备的。)存在, 则可能发生死锁。
《计算机操作系统》- 第5章 4/66
2018/9/6
死锁知识铺垫-举例1
3 4
2 1
3 4
2 1
可能会发生死锁
2018/9/6 《计算机操作系统》- 第5章
已经发生死锁
5/66
死锁知识铺垫-举例2

可分配空间为200K。
P1: …… P2: ……
Request 80K bytes;
…… Request 60K bytes;
2018/9/6
《计算机操作系统》- 第5章
13/66
5.1.2 死锁产生的必要条件

互斥条件(资源独占) 请求和保持条件(部分分配,占有申请) 不剥夺条件(不可强占)
资源的使用是互斥的。每个资源 要么已经分配给进程,要么能够 环路等待条件 提供给进程。如果资源已经被一 个进程占有,则再请求资源的进 这四个条件是死锁发生的必要条件,进程必须同时具备这 程只能等待,直到占有资源的进 四个条件才会发生死锁。其中任意一条不满足,都不会发 程用完后归还资源。 生死锁。但这四个条件并不是死锁发生的充分条件。

2018/9/6
《计算机操作系统》- 第5章
12/66
5.1.2 死锁产生的必要条件

互斥条件(资源独占) 请求和保持条件(部分分配,占有申请) 不剥夺条件(不可强占) 环路等待条件
这四个条件是死锁发生的必要条件,进程必须同时具备这 四个条件才会发生死锁。其中任意一条不满足,都不会发 生死锁。但这四个条件并不是死锁发生的充分条件。
2018/9/6
《计算机操作系统》- 第5章
16/66
5.1.2 死锁产生的必要条件

互斥条件(资源独占) 请求和保持条件(部分分配,占有申请) 不剥夺条件(不可强占) 环路等待条件
这四个条件是死锁发生的必要条件,进程必须同时具备这 每个进程都在等待下一个进程 四个条件才会发生死锁。其中任意一条不满足,都不会发 已经获得的资源,所有等待的 进程构成一个环路,形成永远 生死锁。但这四个条件并不是死锁发生的充分条件。 等待。

Request 70K bytes;
…… Request 80K bytes;
当两个进程都执行第二次空间请求时,发生 死锁。
《计算机操作系统》- 第5章 6/66
2018/9/6
死锁知识铺垫-有关结论

参与死锁的进程最少是两个 参与死锁的进程至少有两个已经占有资源 参与死锁的所有进程都在等待资源 参与死锁的进程是当前系统中所有进程的子 集 注:如果死锁发生,会浪费大量系统资源, 甚至导致系统崩溃。
3.银行家算法-数据结构

Need:需求矩阵
这也是一个n×m的矩阵,用以表示每一 个进程尚需的各类资源数; 如果Need[i, j] = K,则表示进程i还需要 Rj类资源K个,方能完成其任务; Need[i, j] = Max[i, j] – Allocation[i, j]
2018/9/6
《计算机操作系统》- 第5章
本章目录



5.1 5.2 5.3 5.4 5.5
死锁的产生 死锁预防 死锁避免 死锁的检测和解除 线程死锁
2018/9/6
《计算机操作系统》- 第5章
23/66
1.死锁避免

死锁避免定义:在系统运行过程中,对进程发出的
每一个系统能够满足的资源申请进行动态检查,
并根据检查结果决定是否分配资源,若分配后系
32/66
3.银行家算法-数据结构

Available:可利用资源向量
Max:最大需求矩阵 Allocation:分配矩阵 Need:需求矩阵
《计算机操作系统》- 第5章 33/66
生死锁。但这四个条件并不是死锁发生的充分条件。
2018/9/6
《计算机操作系统》- 第5章
15/66
5.1.2 死锁产生的必要条件

互斥条件(资源独占) 请求和保持条件(部分分配,占有申请) 不剥夺条件(不可强占) 环路等待条件
当进程得到资源后,只能由进 这四个条件是死锁发生的必要条件,进程必须同时具备这 程自身主动释放。进程不能剥 四个条件才会发生死锁。其中任意一条不满足,都不会发 夺其他进程已经获得的资源。 生死锁。但这四个条件并不是死锁发生的充分条件。
相关文档
最新文档