现代操作系统 第3章 死锁
OS03调度与死锁

第五章 调度与死锁
9
周转时间
作业提交时间:Si 作业完毕间:Ei(等待时间+运营时间) 周转时间:Ti =Ei – Si 作业平均周转时间:
T=( T1+T2+…+Tn)/n 带权周转时间:Wi=Ti/作业i运营时间 平均带权周转时间:
W=(W1+W2+…+Wn)/n
第五章 调度与死锁
10
进程调度方式
第五章 调度与死锁
3
高级调度
也称为作业调度或宏观调度,一般在批 处理系统中有作业调度。
作业:顾客在一次计算过程中,或者一次
事务处理过程中,要求计算机系统所做工 作旳总称
作业步:一种作业可划提成若干部分,称
为一种作业步
第五章 调度与死锁
4
中级调度
涉及进程在内外存间旳互换,从存储器管 理旳角度来看,把进程旳部分或全部换 出到外存上,可为目前运营进程旳执行 提供所需内存空间。
➢ 参加死锁旳进程至少有两个已经占有资源 ➢ 参加死锁旳全部进程都在等待资源 ➢ 参加死锁旳进程是目前系统中全部进程旳子集
注:假如死锁发生,会挥霍大量系统资源, 甚至造成系统崩溃
第五章 调度与死锁
39
产生死锁旳必要条件
四个必要条件: 互斥条件:涉及旳资源是非共享旳。 不剥夺条件:不能强行剥夺进程拥有旳资源。 部分分配条件:进程在等待一新资源时继续 占有已分配旳资源。 环路条件:存在一种进程旳循环链,链中旳 每一种进程已取得旳资源同步被链中旳下一 种进程所祈求。
3
9:00 8 10:00 10:08 68 8.5
4
9:30 12 10:08 10:20 50
平均周转时间 t=97
操作系统作业(第3章处理机调度和死锁)_答案

第三部分作业管理一、选择题1、在操作系统中,JCB是指()。
A、作业控制块B、进程控制块C、文件控制块D、程序控制块2、处于后备状态的作业存放在()中。
A、外存B、内存C、A和BD、扩展内存3、作业调度程序从处于()状态的队列中选取适当的作业调入主存运行。
A、执行B、提交C、完成D、后备4、作业在系统中存在与否的唯一标志是()。
A、源程序B、作业说明书C、作业控制块D、目的程序5、作业调度的关键在于()。
A、选择恰当的进程管理程序B、选择恰当的作业调度算法C、用户作业准备充分D、有一个较好的操作环境6、按照作业到达的先后次序调度作业,排队等待时间最长的作业被优先调度,这是指()调度算法。
A、先来先服务B、最短作业优先C、响应比高者优先D、优先级7、用户在一次计算过程中,或者一次事物处理中,要求计算机完成所做的工作的集合,这是指()。
A、进程B、程序C、作业D、系统调用8、在进行作业调度时,要想兼顾作业等待时间和计算时间,应选取()。
、A、先来先服务B、最短作业优先 C、响应比高者优先D、优先级9、在批处理系统中,周转时间是()。
A、作业运行时间B、作业等待时间和运行时间之和C、作业的相对等待时间D、作业被调度进入内存到运行完毕的时间10、作业调度算法提到的响应比是指()。
A、要求服务时间与响应时间之比B、响应时间与要求服务时间之比C、要求服务时间与作业等待时间之比D、作业等待时间与要求服务时间之比11、为了对紧急进程或重要进程进行调度,调度算法应采用()。
A、先来先服务法B、优先级法C、短作业优先法D、时间片轮转法12、时间片轮转调度算法是为了()。
A、多个终端都能得到系统的及时响应B、先来先服务C、优先级高的进程先使用CPUD、紧急事件优先使用CPU13、在操作系统中,作业处于()状态时,已处于进程的管理之下。
A、后备B、阻塞C、运行D、完成14、一个作业8:00提交系统,估计运行时间为1小时,若10:00开始执行该作业,其响应比是()。
最新操作系统第三章课后答案教案资料

第三章处理机调度与死锁1. 高级调度与低级调度的主要任务是什么?为什么要引入中级调度?高级调度的主要任务:用于决定把外存上处于后备队列中的哪些作业调入内存,并为它们创建进程,分配必要的资源,然后,再将新创建的进程插入就绪队列上,准备执行。
低级调度的主要任务:用于决定就绪队列中的哪个进程应获得处理机,然后再由分派程序执行将处理机分配给该进程的具体操作。
引入中级调度的主要目的:是为了提高系统资源的利用率和系统吞吐量。
10. 试比较FCFS和SPF两种进程调度算法相同点:两种调度算法都是既可用于作业调度,也可用于进程调度;不同点:FCFS调度算法每次调度都是从后备队列中选择一个或是多个最先进入该队列的作业,将它们调入内存,为它们分配资源,创建进程,然后插入到就绪队列中。
该算法有利于长作业/进程,不利于短作业/进程。
SPF调度算法每次调度都是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存中运行。
该算法有利于短作业/进程,不利于长作业/进程。
15. 按调度方式可将实时调度算法分为哪几种?按调度方式不同,可分为非抢占调度算法和抢占调度算法两种。
18. 何谓死锁?产生死锁的原因和必要条件是什么?a.死锁是指多个进程因竞争资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再向前推进;b.产生死锁的原因有二,一是竞争资源,二是进程推进顺序非法;c.必要条件是: 互斥条件,请求和保持条件,不剥夺条件和环路等待条件。
19.在解决死锁问题的几个方法中,哪种方法最易于实现?哪种方法是资源利用率最高?解决/处理死锁的方法有预防死锁、避免死锁、检测和解除死锁,其中预防死锁方法最容易实现,但由于所施加的限制条件过于严格,会导致系统资源利用率和系统吞吐量降低;而检测和解除死锁方法可是系统获得较好的资源利用率和系统吞吐量。
20. 请详细说明可通过哪些途径预防死锁?a.摒弃"请求和保持"条件:系统规定所有进程开始运行之前,都必须一次性地申请其在整个运行过程所需的全部资源,但在分配资源时,只要有一种资源不能满足某进程的要求,即使其它所需的各资源都空闲,也不分配给该进程,而让该进程等待;b.摒弃"不剥夺"条件:系统规定,进程是逐个地提出对资源的要求的。
《操作系统》第三章 - 死 锁

令n表示系统中进程的数目,m表示资源分类数。
可以把矩阵Allocation和Need中的每一行当做一个 向量,并分别写成Allocationi和Needi。Allocationi表 示当前分给进程pi的资源。
1.资源分配算法 • 令Requesti表示进程pi的申请向量。Requesti[j]= k,表示进 程pi需要申请k个rj类资源。当进程pi申请资源时,就执行下列 动作: ① 若Requesti>Needi,表示出错, ② 如果Requesti>Available,则pi等待。 ③ 假设系统把申请的资源分给进程pi,则应对有关数据结构进 行修改: Available:= Available – Requesti Allocationi:= Allocationi + Requesti Needi:= Needi – Requesti ④ 系统执行安全性算法,查看此时系统状态是否安全。如果是 安全的,就实际分配资源,满足进程pi 的此次申请;否则, 若新状态是不安全的,则pi等待,对所申请资源暂不予分配, 并且把资源分配状态恢复成③之前的情况。
第3章 死
内容提要: 3.1 3.2 3.3 3.4 3.5 3.6
锁
资 源 死锁概念 死锁的预防 死锁的避免 死锁的检测和恢复 处理死锁的综合方式
3.1 资
源
3.1.1 资源使用模式
1.申请 2.使用 3.释放
3.1.2 可剥夺资源与不可剥夺资源
1.可剥夺资源 • 另外进程可以从拥有它的进程那里把它剥 夺过去为己所用,并且不会产生任何不良 影响。例如,内存就是可剥夺资源。 2.不可剥夺资源 • 不能从当前占有它的进程那里强行抢占的 资源,必须由拥有者自动释放,否则会引 起相关计算的失效。
操作系统os03死锁

申请新资源时不释放已占有资源
➢ 不剥夺条件:
一个进程不能抢夺其他进程占有的资源
➢ 环路条件:
S1
S2
存在一组进程循环等待资源
S3
整理课件
3.5.3 处理死锁的基本方法
➢ 预防死锁。 破坏产生死锁的四个必要条件中的一个或几个条件
➢ 避免死锁。 在资源的动态分配过程中,用某种方法去防止系统进入 不安全状态,从而避免发生死锁。
A B C ABC A B C A B C
P1 3 3 2 1 2 2 2 0 0 5 3 2 P3 5 3 2 0 1 1 2 1 1 7 4 3
P4 7 4 3 4 3 1 0 0 2 7 4 5 P2 7 4 5 6 0 0 3 0 2 10 4 7
P0 10 4 7 4 3 0 0 1 0 10 5 7
(4)执行安全性算法,检查此次资源分配后系统是否处于安全 状态。 若安全,将资源正式分配给进程Pi; 否则,将本次的试探分配作废,恢复原来的资源分配状 态,让进程Pi等待。
整理课件
3.安全性算法(1)
(1)设置两向量:
Work[j]=K
①可供进程继续运行所需各类资源数的Work
初始时 Work:=Available。
➢ 如果不按照安全序列分配资源,则系统可能会由安全状态 进入不安全状态。
进程
P1 P2 P3
最大需求
10 4 9
已分配
5 2 2 +1
可用 3-1=2
整理课件
3.由安全状态向不安全状态的转换
➢ 如果不按照安全序列分配资源,则系统可能会由安全状态 进入不安全状态。
进程
P1 P2 P3
最大需求
10 4 9
操作系统第3章-5 死锁

Available=(2, 3, 0) 不能通过算法第2步( Request[i]≤Available ), 2019/2/9 34 所以P4等待。
银行家算法示例(5)
P0请求资源Request(0,2,0),执行银行家算法
2019/2/9
1 ,2,5
17
死锁的避免
避免死锁的基本思想
允许进程动态申请资源,但在每次分配资源时,都 要通过判断系统状态来决定是否分配资源,若分配后 系统可能发生死锁,则不予分配,否则予以分配。
系统状态
安全状态
在某一时刻,如果系统能按某种顺序(如P1,P2,…,Pn, 称为安全序列)为每个进程分配其所需的资源,直至所有进程 都能运行完成,称系统处于安全状态。
2019/2/9
9
避免死锁
不事先采取限制去破坏产生死锁的条 件,而是在资源的动态分配过程中,用某 种方法去防止系统进入不安全状态,从而 避免死锁的发生。 优点
只需要较弱的限制条件,可获得较高的资源利 用率和系统吞吐量。
缺点
实现较难
2019/2/9 10
检测死锁
事先并不采取任何限制,也不 检查系统是否进入不安全区,允许 死锁发生,但可通过检测机构及时 检测出死锁的发生,并精确确定与 死锁有关的进程和资源。
资源的编号不容易合理化 限制了用户简单自主的编程
当系统增加新设备类型时,要重新对系统资源进行合理编 2019/2/9 16 号
资源按序分配示例
系统中有下列 设备:输入机(1),打印机(2), 穿孔机(3),磁带机(4),磁盘(5)。有一进程要 先后使用输入机、磁盘、打印机,则它申请设备时要 按输入机、打印机、磁盘的顺序申请。 例如:1,2,3,…,5 P1: 申请1 申请5 申请2 …
操作系统课件第三章
完成状态
进程 调度
终止 作业
Operating System
2024/1/17
Page 7
作业与进程的关系
❖ 作业可被看作是用户向计算机提交任务的任务实体, 例如一次计算、一个控制过程等
❖ 进程是计算机为了完成用户任务而设置的执行实体, 是系统分配资源的基本单位。
❖ 计算机要完成一个任务实体,必须有一个以上的执行 实体,即一个作业总是由一个以上的多个进程组成
1 n
n i1
Ti TSi
Operating System
事 件 出 现
时间片完 就绪 队列 阻塞 队 列
进程调度
进程完成 CPU
等待事件
Operating System
2024/1/17
Page 25
调度队列模型
具有高级和低级调度的调度队列模型
❖ 在批处理系统中,不仅需要进程调度,而 且还要有作业调度
❖ 就绪队列的形式 ➢ 在批处理系统中,常用高优先权队列。 进程进入就绪队列时,按优先权高低插 入相应位置,调度程序总是把处理机分 配给就绪队首进程
Operating System
2024/1/17
Page 29
3.1.3 选择调度方式和调度算法的若干准则
1. 面向用户的准则 2.
Operating System
2024/1/17
Page 30
3.1.3 选择调度方式和调度算法的若干准则
1. 面向用户的准则 (1) 周转时间短。 (2) 响应时间快。 (3) 截止时间的保证。 (4) 优先权准则。
Operating System
2024/1/17
Page 12
《操作系统》课件03 处理机调度与死锁
第三章 处理机调度与死锁
3.2.3 基于时间片的轮转调度算法
1.时间片轮转算法 ٭时间片大小q的确定 ▪ 太大:退化为FCFS; ▪ 太小:系统开销过大 ٭系统对响应时间的要求;T= nq ٭n是就绪队列中进程的数目; ٭系统的处理能力:(应保证一个时间片处理完常 用命令)
第三章 处理机调度与死锁
低级调度(进程调度,短程调度)
主要是由分派程序(Dispatcher)分派处理机。
非抢占方式:简单,实时性差(如win31) 抢占方式
(1)时间片原则 (2)优先权原则 (3)短作业优先原则。
中级调度(中程)
为提高系统吞吐量和内存利用率而引入的内外存对换功能。
运行频率:低>中>高。
3. 同时具有三级调度的调度队列模型
作业 调度
时间 片完
后备 队列 批量 作业
交互 型作业
就绪 队列
进程 调度 CP U
中级 调度 就绪 ,挂起 队列
事件 出现
进程 完成
阻塞 ,挂起 队列 事
件 出
挂起
现
阻塞 队列
等待 事件
图 3-3 具有三级调度时的调度队列模型
第三章 处理机调度与死锁
3.1.3 选择调度方式和算法的若干准则
第三章 处理机调度与死锁
3.2.2高优先权优先调度算法
1.优先权调度算法类型 ٭非抢占式优先权算法 ٭抢占式优先权算法,实时性更好。
2.优先权类型: ٭静态优先权: ▪ 进程优先权在整个运行期不变。 ▪ 确定优先权依据 (1)进程类型 (2)进程对资源的需求; (3)根据用户需求。 ▪ 特点:简单,但低优先权作业可能长期不被调度。
操作系统课件第3章
操作系统课件第3章第三章处理调机与度锁死第三章理处调机与死锁度3.1处理机调度层的次3.2调度列队型模调和准则度.33调算度法3.实时调度34.5产生死锁的因和必原条要件36预.防死的方法3锁7.死锁检测与的解除第三处理机调度与死锁章3.处1理调度机层的次不同作业系的统,常通需要经不历的处同机理度调,作才能获业处理机得而执。
批量型行作:业需后经先历业作调度高(调级)度进程、调(低级度度)调才能,得处理机获。
终端作型业只:经过进程调需。
在度完较的操善系统作,往中还设置往了级调度中。
第章三处机调度与死理锁.1处理3机度的层次3调..1高1调级度.1作业作业和步(1)业作Job)(。
业是一作个比序程为广泛更概念,的它不仅包了含通的常程和数序,而据还且应配一有份作说业书,明统系据根说明该书来程对序运行的进控制行在。
处批理统系,是中以业为作基本位从外单存入调存的内。
第三章理处机调与度锁死第章三理处机调度与锁2死.作业控块制JB(JobCoCnrotlBlok)c为管了理调和作度,在业多道批理系处统为中每作个业设了一置个作业控块,制同进程如控制是进块在系统中程存在的志一标样,是作业它系在中存在的标统,其中保志了存系对作统进业管理和行调度需的所全信部息在。
JCB所中含包的内因系容统而异,通应常包的内容含有作业标:、识用名称户、用户帐户作、业类(型CPU繁忙型I/O、繁忙、批量型型终、端)型、作状态、调度业信息优先(级、作已运业时行间)、资源需求预(计行时间、要求运内存小、要大求/OI备设的型类和量等)、进数入系统时间、开处始理时间作、完成业时、间业作出时退、资源间使情况用等。
三章第理处调机度与死锁每当作进业系统入,系时统便为个每业建立一作J个C,B根据作业型类将插入相它应的后队备列。
作中调业度程依据一序定的度算法来调度它们,被调度到调的作业将装入会内。
在存业运作行期间系统,按照JC就B的中信对息业作进行制控当一。
操作系统第二版第三章课后习题答案
第三章死锁作业答案1,3,9,11,13,14, 161.什么是死锁?试举出一个生活中发生死锁的例子。
参考答案:所谓死锁,是指在一个进程集合中的每个进程都在等待仅由该集合中的另一个进程才能引发的事件而无限期地僵持下去的局面。
(也可以是:多个进程因竞争资源而造成的一种僵局,若无外力作用这些进程都将永远不能再向前推进。
)举例:1)书中例子“两辆汽车过窄桥发生冲突”2)公共汽车到站,车上的人要下车,车下的人要上车,挤在车门口。
结果是车上的人下不来,车下的人上不去。
3. 发生死锁的四个必要条件是什么?参考答案:发生死锁的四个必要条件是:互斥条件、占有且等待条件、不可抢占条件和循环等待条件。
9. 设想有一条带闸门的运河,其上有两座吊桥,它们在一条公路上,运河和公路的交通都是单方向的。
河上的交通工具是轮船。
当轮船距A桥100m时就鸣笛警告,若桥上无车辆,吊桥就吊起,直至轮船尾部过桥为止。
对吊桥B也做同样处理。
设轮船的长度为200m。
车辆和轮船任意前进时,是否会发生死锁?若会,说明理由。
怎样发现?并请提出一种防止死锁的办法。
参考答案:会产生死锁。
当轮船距A桥100m时鸣笛警告,此时若桥上无车辆,吊桥就吊起,但是B桥上有车辆,而且由于A桥吊起,车辆无法前进,B桥上的车辆无法下桥。
于是,轮船和车辆都不能前进,造成死锁现象。
一种防止死锁的办法是:当轮船距A桥100m时就鸣笛警告,车辆不能再上B桥。
当B桥上无车辆时,就吊起B 桥;然后,当A桥上无车辆,则吊起A桥。
轮船通过A桥和B桥后,两个吊桥放下,车辆可以通行。
(该方法相当于资源有序分配,也可以采用资源预分配策略,即同时吊起A、B两桥的方法,资源利用率相对较低。
)11. 死锁和“饥饿”之间的主要差别是什么?参考答案:①处于死锁状态的进程都占有一定的资源,而处于饥饿状态的进程永远都得不到所申请的资源②死锁是一种僵局,在无外力干预下,处于死锁状态的全部进程都不能前进,即它们都处于阻塞态,可能造成整个系统瘫痪;而出现饥饿时系统照常运行,只是某个或某几个进程永远也不能得到所需的全部服务③造成死锁的根本原因是资源有限且使用不当;而造成饥饿的原因是资源分配策略或调度策略不合适,如果采用先来先服务的资源分配策略就可以避免饥饿。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.5.2 产生死锁的必要条件
破坏第一个条件(互斥条件),使资源 可同时访问而不是互斥使用,是简单的 方法。磁盘可以用这种方法管理,但许 多资源往往是不能同时访问的,这种做 法许多场合行不通
3.5.2 产生死锁的必要条件
采用抢占式的调度方法可以破坏第三个 条件(不剥夺条件),但剥夺调度方法 目前只适用于对主存资源和处理器资源 的分配。 比较实用的方法是破坏第二个条件或第 四个条件
进程Q1 …. P(S1) P(S2) …. 使用r1和r2 … V(s1) V(s2)
进程Q2
…. P(S2) P(S1) …. 使用r1和r2 … V(s2) V(s1)
同类资源分配不当
若系统中有m个资源被n个进程共享, 当每个进程都要求K个资源,而m<n*k 时,即资源数小于进程所要求的总数时 ,如果分配不得当就可能引起死锁 例如,m=5 n=5 k=2,分配策略为每 个进程轮流分配,首先第一次每个进程 都分配一个,在第二轮分配时就会出现 死锁
(a)
(b)
(c)
(d)
说明(b)中的状态为不安全状态 safe
45
单个资源的银行家算法
(a)
(b)
(c)
• 三个资源分配状态
– 安全 – 安全 – 不安全
46
多个资源的银行家算法
多个资源的银行家算法例子
47
银行家算法实例
假定系统中有五个进程{P0, P1, P2, P3, P4}和三类 资源{A, B, C},各种资源的数量分别为10、5、7 ,在T0时刻的资源分配情况如图 3-15 所示。
1. 可抢占资源 2. 不可抢占资源
临时性资源:只可使用一次的资源;如信 号量,
1. 中断信号,同步信号等(可消耗性资源) 2. “申请--分配--使用--释放”模式
死锁的四个条件
1.
•
互斥条件
每个资源要么已经分配给了一个进程,要么就是可用 的
2.
•
占有和等待条件
已经得到了某个资源的进程可以再请求新的资源
• 所有进程在开始执行前请求所需的全部资源
– 一个进程不会因其他资源而等待
•ቤተ መጻሕፍቲ ባይዱ问题
– 很多进程直到运行时才知道它需要多少资源 – 资源利用率不是最优的
• 变种:
3.
•
不可抢占条件
已经分配给一个进程的资源不能强制性地被抢占,它 只能被占有它的进程显式地释放
4.
环路等待条件
• • 一定有由两个或两个以上的进程组成的一条环路 该环路中的每个进程都在等待着下一个进程所占有的 15 资源
死锁建模(2)
• 有向图建模(资源分配图)
– 资源 R 分配给进程A – 进程B 请求或等待资源S – 进程 C和D为得到资源T 和U处于死锁
每种类型多个资源的死锁检测(3)
死锁检测算法的例子
25
从死锁中恢复(1)
• 利用抢占恢复
– 将某一资源从一个进程强行取走给另一个进 程使用 – 取决于该资源本身的特性。
• 利用回滚恢复
– 周期性对进程进程进行检查点检查 – 使用检查点保存资源状态 – 如果发现死锁回滚进程
26
从死锁中恢复(2)
T0时刻的安全性:
(2) P1请求资源:P1发出请求向量Request1(1,0,2), 系统按银行家算法进行检查: ① Request1(1, 0, 2)≤Need1(1, 2, 2) ② Request1(1, 0, 2)≤Available1(3, 3, 2) ③ 系统先假定可为P1分配资源,并修改Available, Allocation1和Need1向量,由此形成的资源变化情况如图 3-16 中的圆括号所示。
• 通过杀死进程恢复
– 最直接也是最简单的解决死锁的方法 – 杀掉环中的一个进程 – 环外的进程释放其资源 – 杀死可以从头开始重新运行而且不会带来副作用 的进程
27
资源轨迹图
替代方案
3.5.2 产生死锁的必要条件
互斥:竞争的资源一次只能被一个进程使用。 请求和保持条件;当一个进程已经占有了一些资源,同时又要申请 新的资源,若新资源申请失败,进程将占有资源且阻塞等待。 不剥夺条件(不可强占):一个资源仅能被占有它的进程所释放,而 不能被别的进程强行强占 环路等待条件:若干个进程构成环行请求链,其中每个进程均占有若 干种资源中的某一种,同时每个进程还要求(链上)下一进程所占有的 资源. 以上前三个条件是死锁存在的必要条件,但不是充分条件。第四个 条件是前三个条件同时存在时产生的结果。所以这些条件不是完全 独立的
停止直到B 可以通车
资源
• 一些独占性资源
– 打印机 – 磁带 – 系统内部表中的表项
• 进程需要一个合理的顺序去访问资源 • 假设一个进程拥有资源 A 并请求资源 B
– 同时另一个进程拥有B 并请求A – 两个进程都被阻塞,并且一直处于这样的状态
4
资源 (1)
• 死锁有可能出现,当…
– 进程对设备、文件等取得了排他性访问权时 – 我们把这类需要排他性使用的对象称为资源 resources
死锁避免 资源轨迹图
两个进程的资源轨迹图
38
确定是否安全状态
在P2完成之后
P2完成
P1完成
安全状态
不安全状态
假设这时P1 申请一个R1 和一个R3, 状态还是安 全吗?是否 拒绝P1?
安全状态和不安全状态(1)
(a)
(b)
(c)
(d)
(e)
说明(a)中的状态为安全状态
44
安全状态和不安全状态(2)
• 可抢占资源
– 可以从拥有它的进程中抢占而不会产生任何副作 用
• 不可抢占资源
– 指在不引相关的计算失败的情况下,无法把它从 占有它的进程处抢占过来 5
进程推进顺序不当产生死锁
进程P 请求读卡机 请求打印机 释放读卡机 释放打印机
进程Q 请求打印机 请求读卡机 释放读卡机 释放打印机
PV操作使用不当产生死锁
② Request0(0, 2, 0)≤Available(2, 3, 0);
③ 系统暂时先假定可为P0分配资源,并修改有关数据 ,如图 3-18 所示。
3.7 死锁的检测
条件:允许死锁必要条件存在,也未采用避免死锁的 算法(提高资源利用率)——故死锁可能发生,需检 测! 定义:实际地检查系统中是否存在死锁,并标出那些 进程和资源被牵扯在死锁中。 应用:允许前三个死锁的必要条件存在的系统中,检 查系统中是否存在循环等待条件。 方法:资源分配图
3.5.2 产生死锁的必要条件
静态分配策略(破坏占有和等待条件) 层次分配策略(阻止环路等待条件): 一个进程得到某一层的一个资源后,它 只能再申请在较高一层的资源。
3.5.3 处理死锁的基本方法
1. 预防死锁(破坏4条件之一,缺点:低效)。 2. 避免死锁(属于事先预防,在资源的动态分配过程 中,用某种方法去防止系统进入不安全状态) 。 3. 检测死锁( 不事先采取任何措施,也不必检查是 否进入不安全区,而是允许系统在运行的 过程中 发生死锁。但可以通过系统所设置的检测机构, 实时检测出死锁的发生,并精确的确定与死锁有 关的进程和资源;然后,采取适当措施从系统中 将已经发生的死锁清除掉) 。 4. 解除死锁(与检验死锁相配套的一套措施) 。
死锁定理:当且仅当系统某状态S所对 应的资源分配图是不可化简的,则S是 死锁状态。而不可被化简的进程即是被 死锁的进程。反之,若状态S所对应的 资源分配图是可化简的,则S是安全状 态。 资源分配图的化简结果与化简顺序无关 ,最终结果是相同的
每种类型多个资源的死锁检测(2)
死锁检测算法的数据结构
24
3.5.3 处理死锁的基本方法
1.预防死锁的方法 在系统设计时确定资源分配算法,保证不发生 死锁。具体的做法是破坏产生死锁的四个必要条件之 一 1)资源一次性分配;(破坏请求和保持条件) 2)可剥夺资源;即当某进程新的资源未满足时, 释放已占有的资源(破坏不可剥夺条件) 3)资源有序分配法;做法:系统给每类资源赋予 一个编号,每一个进程按编号递增的顺序请求资源, 释放则相反(破坏环路等待条件)
④ 再利用安全性算法检查此时系统是否安全。
先看进程已拥有的资源数目以及还需要的资源数目, 看系统可提供的资源数目是否满足该进程还需要的资 源数目,若可以满足则将资源分配给该进程,该进程 用完后释放,释放后系统重新计算可提供的资源数目 ,再分配给下一个可以满足需求的进程。
(3) P4请求资源:P4发出请求向量Request4(3,3,0), 系统按银行家算法进行检查: ① Request4(3, 3, 0)≤Need4(4, 3, 1); ② Request4(3, 3, 0) < Available(2, 3, 0),让 P4 等 待 。 (4) P0 请 求 资 源 : P0 发 出 请 求 向 量 Requst0(0,2,0),系统按银行家算法进行检查: ① Request0(0, 2, 0)≤Need0(7, 4, 3);
• UNIX 和Windows 采用此算法 • 它是下面两者的折衷
– 方便性 – 正确性
20
每种类型一个资源的死锁检测 (1)
• 注意资源的所属和请求关系 • 如果图中包含一个或一个以上的环,那么死锁就存在
21
资源分配图化简
化简:一个进程的所有资源要求均能被满足,则该进 程得到其所需全部资源从而不断取得进展,直至完成 全部任务并释放出全部资源。 在有向图中找到既非阻塞又非孤立的结点,分配 它所需的全部资源后,当它继续执行并完成然后 释放其全部资源而使之成为孤立结点。 把孤立结点释放的资源分配给阻塞进程,使之能 继续运行,并且在有限时间后完成,再释放其全 部资源而成为新的鼓励结点。 经过一系列上述步骤,若能消去图中所有的边, 使所有进程都成为孤立结点,则图可完全化简。 否则为不可完全化简。