当前位置:文档之家› 第6章_进程管理与作业管理2

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

– 如:硬件资源、软件资源
消耗性资源:由某个进程所产生,只为另一个进 程使用一次,或经短暂时间后便不再使用的资源。
– 如:时钟中断、同步信号、消息等
b、共享/独享资源:例如CPU、主存/打印机 c、可剥夺/不可剥夺资源
产生死锁的必要条件

7




互斥:对于独占资源,每个资源每次只能给一个进程使 用,进程申请到了资源后占为己有,则排斥其他进程享 受该资源 非剥夺:正在使用的资源不可剥夺,进程获得的资源尚 未使用完毕之前,只能由占有者自己释放,不能被其他 进程强行占用 占有且等待:进程因未分配到新的资源而受阻,但对已 占有的资源又“死抱住不放” 循环等待:存在进程的循环等待链,前一进程占有的资 源是后一进程所需求的资源,结果就形成了循环等待的 僵持局面 说明:发生死锁,则四个条件一定同时成立;破坏其中 一个,死锁就可以阻止。
避免死锁的算法——银行家算法

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

用银行家算法避免死锁
操作系统(银行家) 操作系统管理的资源(周转资金) 进程(要求贷款的客户)
银行家算法的数据结构

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

25
现在有12个资源供三个进程共享,进程1共需要4个资 源,但第一次先申请一个资源;进程2总共需要6个资 源,第一次要求4个资源;进程3总共需要8个资源,第 一次需要5个资源。现在的分配情况如下: 已占资源数 最大需求量 进程 P1 P2 P3 1 4 5 4③ 6② 8③
死锁的避免

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

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

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

3
在多道程序系统中,若干个进程彼此相互等待对 方拥有且不会释放的资源,从而形成各进程都想 得到资源而又都得不到资源,因而不能继续向前 推进的僵局状态,就叫死锁。
例1:进程推进顺序不当产生死锁
4
设系统有打印机、读卡机各一台,被进程P和Q共 享。两个进程并发执行,按下列次序请求和释放 资源: 进程P 请求读卡机 请求打印机 释放读卡机 释放打印机 进程Q 请求打印机 请求读卡机 释放读卡机 释放打印机
例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、可再用资源/消耗性资源
可再用资源:可供进程重复使用
死锁的预防(1)

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

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

33

立即结束所有进程的执行,并重新启动操作系统。方法 简单,但以前工作全部作废,损失可能很大。 撤销陷于死锁的所有进程,解除死锁继续运行。 逐个撤销陷于死锁的进程,回收其资源,直至死锁解除。 剥夺陷于死锁的进程占用的资源,但并不撤销它, 直至 死锁解除。 根据系统保存的checkpoint,让所有进程回退,直到足以 解除死锁。 当检测到死锁时,如果存在某些未卷入死锁的进程,而 这些进程随着建立一些新的抑制进程能执行到结束,则 它们可能释放足够的资源来解除死锁。

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

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

8
约定Pi→Rj为请求边,表示进程Pi申请资源类Rj中的一 个资源得不到满足而处于等待Rj类资源的状态,该有向 边从进程开始指到方框的边缘,表示进程Pi申请Rj类中 的一个资源。 Rj→Pi为分配边,表示Rj类中的一个资源已被进程Pi占 用,由于已把一个具体的资源分给了进程Pi,故该有向 边从方框内的某个圆点出发指向进程。
死锁的预防(4)
系统分配
17
静态预分配,破坏部分分配条件:一个进程必 须在执行前就申请它所要的全部资源,并且直 到它所要的资源都得到满足后才开始执行。 缺点:a、资源浪费 b、作业延迟
死锁的避免

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

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

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

12
死锁的预防

13
相关主题