第6章_进程管理与作业管理2

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

28
存在一个状态序列能够使所有的客户均得到其所 有的贷款,则称该状态是安全的。
银行家算法示例

29
图示状态是安全的,以使 Marvin 运行结束,释 放所有的4个单位资金。这样下去便可满足 Suzanne或Barbara的请求。 考虑给Barbara另一个她申请的资源,则得到的 状态是不安全的。 如果忽然所有的客户都申请,希望得到最大贷款 额,而银行家无法满足其中任何一个的要求,则 发生死锁。
死锁的检测

31
用表格来记录进程使用和等待资源的情况。
进程 P1 P2 P3 依次申请 r1、r5、r3 r3、r4、r2 r2、r5 已占 r5 、r1 r3 r2 等待资源 r3 r2 、r4 r5
出现死锁
解除死锁
①资源剥夺法 ②撤消进程法
32
解除死锁

33

立即结束所有进程的执行,并重新启动操作系统。方法 简单,但以前工作全部作废,损失可能很大。 撤销陷于死锁的所有进程,解除死锁继续运行。 逐个撤销陷于死锁的进程,回收其资源,直至死锁解除。 剥夺陷于死锁的进程占用的资源,但并不撤销它, 直至 死锁解除。 根据系统保存的checkpoint,让所有进程回退,直到足以 解除死锁。 当检测到死锁时,如果存在某些未卷入死锁的进程,而 这些进程随着建立一些新的抑制进程能执行到结束,则 它们可能释放足够的资源来解除死锁。
死锁的பைடு நூலகம்防(4)
系统分配
17
静态预分配,破坏部分分配条件:一个进程必 须在执行前就申请它所要的全部资源,并且直 到它所要的资源都得到满足后才开始执行。 缺点:a、资源浪费 b、作业延迟
死锁的避免

18
解决死锁问题的另一种方法是死锁避免。 在死锁预防中,约束资源请求,至少防止4个死 锁条件中的一个发生。这可以通过防止发生三个 必要策略条件中的一个直接完成,也可以通过防 止循环等待间接完成,但这都会导致低效的资源 使用和低效的进程执行。 死锁避免则相反,它允许三个必要条件,但通过 明智的选择,确保永远不会到达死锁点,因此避 免比预防允许更多的并发。
死锁

3
在多道程序系统中,若干个进程彼此相互等待对 方拥有且不会释放的资源,从而形成各进程都想 得到资源而又都得不到资源,因而不能继续向前 推进的僵局状态,就叫死锁。
例1:进程推进顺序不当产生死锁
4
设系统有打印机、读卡机各一台,被进程P和Q共 享。两个进程并发执行,按下列次序请求和释放 资源: 进程P 请求读卡机 请求打印机 释放读卡机 释放打印机 进程Q 请求打印机 请求读卡机 释放读卡机 释放打印机
– 如:硬件资源、软件资源
消耗性资源:由某个进程所产生,只为另一个进 程使用一次,或经短暂时间后便不再使用的资源。
– 如:时钟中断、同步信号、消息等
b、共享/独享资源:例如CPU、主存/打印机 c、可剥夺/不可剥夺资源
产生死锁的必要条件

7




互斥:对于独占资源,每个资源每次只能给一个进程使 用,进程申请到了资源后占为己有,则排斥其他进程享 受该资源 非剥夺:正在使用的资源不可剥夺,进程获得的资源尚 未使用完毕之前,只能由占有者自己释放,不能被其他 进程强行占用 占有且等待:进程因未分配到新的资源而受阻,但对已 占有的资源又“死抱住不放” 循环等待:存在进程的循环等待链,前一进程占有的资 源是后一进程所需求的资源,结果就形成了循环等待的 僵持局面 说明:发生死锁,则四个条件一定同时成立;破坏其中 一个,死锁就可以阻止。
资源分配图的一个例子
R1 R2
9
P1
P2
P3
R3
资源分配图的另一个例子
P1
10
R1
R2
P2
P3
P4
资源分配图死锁状态
11
(1)如果进程-资源分配图中无环路,则此时系统没有发生 死锁。 (2)如果进程-资源分配图中有环路,且每个资源类中仅有 一个资源,则系统中发生了死锁,此时,环路是系统发 生死锁的充要条件,环路中的进程便为死锁进程。 (3)如果进程-资源分配图中有环路,且涉及的资源类中有 多个资源,则环路的存在只是产生死锁的必要条件而不 是充分条件。
23
(3)进程获得资源后,可以顺利执行,直到完成,释放所有资源: work=work+Allocation; Finishe[i] = false; 回到步骤(2); (4)如果所有进程的Finish[i] = True;表示系统安全;否则系统 表示不安全状态;
银行家算法

24
银行家算法的特点
允许互斥、部分分配和不可抢占,可提高资源利用 率; 要求事先说明最大资源要求,在现实中很困难;
进程的安全性
1
死锁概述

2
操作系统中的死锁基于如下假定:
任意一个进程要求资源的最大数量不超过系统能提 供的最大量; 如果一个进程在执行中提出的资源要求能够得到满 足,那么它一定能在有限时间内结束; 一个资源在任何时刻最多只为一个进程所占有; 一个进程申请资源,只在资源得不到满足时才处于 等待状态; 一个进程结束时释放它所占有的全部资源; 系统具有有限个进程和资源。
死锁的检测

30
死锁检测算法与死锁避免算法是类似的,不同在 于前者考虑了检查每个进程还需要的所有资源能 否满足要求;而后者则仅要根据进程的当前申请 资源量来判断系统是否进入了不安全状态。 死锁检测算法的策略是查找一个进程,使得可用 资源可以满足该进程的资源请求,然后假设同意 这些资源,让进程运行直到完成,再释放它的所 有资源,然后算法寻找另一个可以满足资源请求 的进程。
资源分配图

8
约定Pi→Rj为请求边,表示进程Pi申请资源类Rj中的一 个资源得不到满足而处于等待Rj类资源的状态,该有向 边从进程开始指到方框的边缘,表示进程Pi申请Rj类中 的一个资源。 Rj→Pi为分配边,表示Rj类中的一个资源已被进程Pi占 用,由于已把一个具体的资源分给了进程Pi,故该有向 边从方框内的某个圆点出发指向进程。
系统 安全
剩余资源数
2
银行家算法示例
进程 P1 P2 P3 剩余资源数

26 最大需求量 4② 6② 8③ 1
已占资源数 2 4 5
系统不安全 银行家算法就是不断测试各个进程占用和申请资 源的情况,在保证至少一个进程能得到所需的全 部资源的前提下进行资源的分配。
银行家算法示例
进程
27
已有资源数 还要申请资源数

只有当应用于资源的状态可以很容易地保存并在 以后恢复的情况下 (像处理器一样) ,这种方法才 是实用的
死锁的预防(3)

16
按序分配
采用资源顺序使用法,破坏环路条件; 循环等待条件可以通过定义资源类型线性顺序来预 防。如果一个进程已经分配到了 R类型资源,它接下 来请求的资源只能是那些排在 R类型之后的资源类型。 和占有等待预防一样,循环等待预防可能是低效的, 它使进程执行速度变慢,并且可能没有必要地拒绝资 源访问。
死锁的预防(1)

14
破坏互斥条件
使资源可同时访问而不是互斥使用,是个简单的办 法,磁盘可用这种办法管理,但有许多资源往往是不 能同时访问,所以这种做法许多场合行不通。 所以一般来说,4个条件中的互斥条件不可能禁止。 如果访问资源要求互斥,操作系统必须支持。某些 资源,如文件,可能允许多个读访问,但只允许互斥 的写访问。即使在这种情况下,如果有多个进程要求 写权限,也可能发生死锁。

银行家算法的缺点:
①要求被分配的各类资源数量固定; ②要求用户也要保持不变; ③算法只保证用户在有限时间内得到满足,难以满 足更高响应的要求; ④需要花费很多时间用于不断的测试。
银行家算法示例

25
现在有12个资源供三个进程共享,进程1共需要4个资 源,但第一次先申请一个资源;进程2总共需要6个资 源,第一次要求4个资源;进程3总共需要8个资源,第 一次需要5个资源。现在的分配情况如下: 已占资源数 最大需求量 进程 P1 P2 P3 1 4 5 4③ 6② 8③
Available:可利用的资源量; Needi:进程Pi尚需要的各类资源数; Allocation:已经分配给某进程的资源数; Requesti:进程Pi的请求量。
22
(1)若Requesti≤Needi,转向步骤(2),否则出错; (2)若Requesti≤Available,转向步骤(3),否则表示系统没有足 够的资源,进程Pi必须等待; (3)系统试探分配资源,修改以下数据: Available = Available – Requesti Allocation= Allocation + Requesti Needi = Needi - Requesti (4)执行安全检查:系统是否处于安全状态。 若系统处于安全状态,才正式将资源分配给进程Pi; 若系统不安全,试探分配作废,恢复资源原态,进程Pi等待。
避免死锁的算法——银行家算法

21
银行家算法
银行家拥有一笔周转资金。 客户要求分期贷款,如果客户能够得到各期贷款, 就一定能够归还贷款。 银行家应谨慎的贷款,防止出现坏帐。

用银行家算法避免死锁
操作系统(银行家) 操作系统管理的资源(周转资金) 进程(要求贷款的客户)
银行家算法的数据结构
系统拥有某类资源10个 4 2 2
P Q R
4 2 7
对每个请求进行检查,是否会导致不安全状态。 若是,则不满足该请求;否则便满足。 检查状态是否安全的方法是看他是否有足够的资 源满足一个距最大需求最近的客户,如此反复下 去。如果所有投资最终都被收回,则该状态是安 全的,最初的请求可以批准。

银行家算法示例
死锁的预防(2)

15
剥夺式分配
采用剥夺式调度方法可破坏第二个条件,但只适用 于对主存资源和处理器资源的分配; 如果占有某些资源的一个进程,其进一步的资源请 求被拒绝,则该进程必须释放它最初的资源; 如果一个进程请求当前被另一个进程占有的一个资 源,操作系统可以剥夺第二个进程,要求它释放资源;
处理死锁的基本方法
死锁的预防 死锁的避免 死锁的检测 死锁的解除(*)

12
死锁的预防

13
死锁预防策略是试图设计一种系统,在这样的系 统中排除发生死锁的可能性。 可以把死锁预防方法看作两类
间接的死锁预防方法:即防止前三个必要条件中任 何一个的发生 直接的死锁预防方法:即防止循环等待的发生
死锁的避免

20
死锁避免的优点是它不需要死锁预防中的剥夺和 重新运行进程,并且比死锁预防的限制少,但在 使用中也有许多限制。
必须事先声明每个进程请求的最大资源; 考虑的进程必须是无关的,也就是说,它们执行的 顺序必须没有任何同步要求的限制; 分配的资源数目必须是固定的; 在占有资源时,进程不能退出。
银行家算法的安全检查算法
(1)设臵两个向量 Work:系统可提供进程继续运行所需要的各类资源数; 初始值:work = available; Finish:系统能否有足够的资源分配给进程完成 初始值:Finish[i] = false;得到资源后为True (2)从进程集合中找到一个能满足下列条件的进程: Finish[i] = false;Needi≤ available 若找到这样的进程,执行步骤(3),否则执行步骤(4);
例2 PV操作使用不当产生死锁
进程Q1 ……… P(S1); P(s2); 使用r1和r2; V(S1); V(S2); 进程Q2 ……… P(s2); P(s1); 使用r1和r2 V(s2); V(S1);
5
资源的概念
资源的分类
6
a、可再用资源/消耗性资源
可再用资源:可供进程重复使用
预防和避免的比较
方法
19
资源分配 各 种 可 能 主要优点 主要缺点 策略 模式 预防 保守的;宁可 一 次 请 求 适 用 于 作 突 发 式 处理的 效率低;进程初始化 时间延长 Prevention 资源闲置(从 所有资源 进程;不必剥夺 机 制 上 使 死 资源剥夺 适 用 于 状 态 可 以 保存和 剥夺次数过多;多次 对资源重新起动 锁条件不成 恢复的资源 立) 资 源 按 序 可以在编译时(而不必在 不 便 灵 活 申 请 新 资 源 申请 运行时)就进行检查 避免 是“预防”和 寻 找 可 能 不必进行剥夺 使用条件:必须知道 将来的资源需求;进 Avoidance “检测”的折 的 安 全 的 程可能会长时间阻 衷(在运行时 运行顺序 塞 判断是否可 能死锁) 检测 宽松的;只要 定 期 检 查 不延长进程初始化时间;通过剥夺解除死锁, Detection 允许,就分配 死 锁 是 否 允 许 对 死 锁 进 行 现场处 造成损失 资源 已经发生 理
相关文档
最新文档