生产围棋工人不小心相等数量黑子和白子混在一块_第1页
生产围棋工人不小心相等数量黑子和白子混在一块_第2页
生产围棋工人不小心相等数量黑子和白子混在一块_第3页
生产围棋工人不小心相等数量黑子和白子混在一块_第4页
生产围棋工人不小心相等数量黑子和白子混在一块_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、生产围棋的工人不小心把相等数量的黑子和白子混在一块,该系统由两个并发执行的进程组成,系统功能如下:(1)进程a专门拣黑子,进程b专门拣白子;(2)每个进程每次只拣一个子,当一个进程在拣子时不允许另一个进程去拣子(3)当一个进程拣一个子后,必让另一个进程拣一个子试用同步原语管理进程,使其能正确实现上述功能。(假定系统启动时先让进程a拣子)p111 5.19若将读者离开与读者进入分别看成一个进程,试用同步原语描述进程间关系。读者进入进程 读者离开进程进入 注销登记 离开一条小河上有一座独木桥,现河东河西都有人要过桥,同一方向的可连续过桥;某方向有人过桥时另一方向的人须等待。如果把每个过桥者看作一个

2、进程,为保证安全,用信号量协调他们之间的关系。第七章 死锁(deadlock)1、死锁问题的提出2、死锁的必要条件3、死锁的预防4、死锁的避免和银行家算法5、死锁的检测6、死锁的恢复7.1 死锁问题的提出死锁是指计算机系统和进程所处的一种状态。常定义为:在系统中的一组进程,由于竞争系统资源或由于彼此通信而永远阻塞,我们称这些进程处于死锁状态。死锁的现象 a进程 b进程wait(s1) wait(s2)wait(s2) wait(s1)signal(s2) signal(s1)signal(s1) signal(s2)死锁的原因资源不足,竞争资源进程推进路径不当 申请不同类型资源产生死锁p1:申

3、请打印机申请打印机申请扫描仪申请扫描仪使用使用释放打印机释放打印机释放扫描仪释放扫描仪p2:申请扫描仪申请扫描仪申请打印机申请打印机使用使用释放打印机释放打印机释放扫描仪释放扫描仪申请同类资源产生死锁(如内存) 设有资源r,r有m个分配单位,由n个进程p1,p2,pn(n m)共享。假设每个进程对r的申请和释放符合下列原则: * 一次只能申请一个单位 * 满足总申请后才能使用 * 使用完后一次性释放m=2,n=3资源分配不当导致死锁产生7.2 死锁的必要条件 资源的分类 死锁的必要条件一、资源的分类 可抢占资源、不可抢占资源 共享资源、独享资源 可再次使用的永久资源、消耗性的临时资源二、死锁的

4、必要条件 互斥条件:一个资源每次只能给一个进程使用 不可抢占条件:资源申请者不能强行从资源占有者手中 夺取资源,资源只能由占有者自愿释放 部分分配条件:一个进程在申请新资源的同时保持对原 有资源的占有 循环等待条件:存在一个进程等待队列 p1 , p2 , , pn, 其中p1等待p2占有的资源,p2等待p3占有 的资源,pn等待p1占有的资源,形成 一个进程等待环路7.3 死锁的预防 在系统设计时确定资源分配算法,保证不发生死锁。具体的做法是破坏产生死锁的四个必要条件之一 预防死锁是一种较可取 的方法,但资源的利用率较低。1、破坏互斥条件 互斥是正确使用非共享资源的唯一手段。 故不能通过取消

5、互斥来预防死锁。2、破坏不可抢占条件适用于状态容易保护,稍后又容易恢复的资源。如cpu,内存。3、破坏部分分配条件 采用预先静态分配法:每个进程执行前,一次分配其所有资源 允许进程仅当自己未占有资源时才申请资源。4、破坏循环等待条件 有序资源分配为使“循环等待”条件不满足,我们把所有资源按类型进行排队,并赋予不同的编号。 申请 按序号递增次序进行 每个进程 释放 按序号递减次序进行优点:较前几种,改善资源的利用率。缺点:进程实际需求和资源顺序不一致 会造成资源浪费。例如:1,2,3,10p1:申请申请1申请申请3申请申请9p2:申请申请1申请申请2申请申请5p3 p107.4 死锁的避免和银行

6、家算法 死锁避免 安全状态和不安全状态 银行家算法数据结构 银行家算法一、死锁避免定义在系统运行过程中,对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,若分配后系统可能发生死锁,则不予分配,否则予以分配例 单资源的银行家算法假定某银行家有一笔资金可供一批顾客借用,并假定: 每个顾客预知他的最大借款总额,且不超过银行家拥有的可用资金总和。 每次借款以一万元为单位。 每当顾客提出借口请求,银行家可立即给予,或让顾客等一段时间。 只有当顾客达到他的预定最大借款额时,他才在有限时间依次归还。安全状态:如果在某时刻,银行有可能使它当时的所有的顾客在以后有限时间内完成

7、全部成交,则此刻的状态是安全。不安全状态:永远不具有成交的可能,则为不安全。c 2 p 4(4) q 2(1) r 2(7)c:现金总额, p,q,r:顾客c 4 p 4(4) r 2(7) c 8 r 2(7)c 10安全状态c 1 p 4(4) q 2(1) r 3(6)c 3 p 4(4) r 3(6) 不安全状态二、安全状态和不安全状态 安全状态:指系统能按某种进程顺序如 为每个进程分配资源直至最大需求。 不安全状态:在系统中不存在这样的序列。三、银行家算法数据结构 available:一个长度为m的向量,表示每类资源的可用数目。 如果availablej=k,表明rj类资源有k个。

8、max:一个mn矩阵,定义每个进程的最大资源需求数,如果maxi,j=k,表示进程i需要rj类资源有k个。 allocation:一个mn矩阵,定义当前分配给每个进程每类资源的数目。如果allocation i,j=k,则表示进程i获得:rj类资源有k个 need:一个mn矩阵,表示每个进程还需多少资源。 如果 needi,j=k,表示进程i还需要rj类资源有k个。表示进程i需要rj类资源有k个四、银行家算法设:requesti是进程pi的请求向量当pi发出资源请求后,系统按如下步骤进行检查:1、如果requesti needi 则go to 2,否则认为出错。2、如果requesti ava

9、ilable 则go to 3,否则表示无足够资源, pi等待。3、系统进行试探分配,并求该相应数据结构数据 available:= available- requesti allocationi:= allocationi+ requesti needi:= needi-requesti4、系统执行安全性算法:安全,把资源分配给pi,否则, pi等待。安全性算法1、设work 和 finish是长度分别为m,n的向量 初始值work:=available ,finishi:= false(所有)2、 从进程集合中找到一个能满足下列条件的进程 a. finishi= false b. need

10、i work 如找到go to 3 ,否则 go to 4 3、 当进程pi 获得资源后,顺利执行,直至完成,并释放分配给它的资源。 work:= work+ allocationi finishi:= true go to 24、如果所有进程的finishi= true 则表示系统安全,否则 为不安全。例1假定系统中五个进程p0p4和三种资源a,b,c,资源数量分别为10,5,7,在t0时刻的资源分配情况如下表。 max allocation need availablep0 7,5,3 0,1,0 7,4,3 3,3,2p1 3,2,2 2,0,0 1,2,2p2 9,0,2 3,0,2

11、6,0,0p3 2,2,2 2,1,1 0,1,1p4 4,3,3 0,0,2 4,3,11、t0时刻安全性 work need allocation work+ allocation finishp1 3 3 2 1 2 2 2 0 0 5 3 2 t p3 5 3 2 0 1 1 2 1 1 7 4 3 t p4 7 4 3 4 3 1 0 0 2 7 4 5 t p2 7 4 5 6 0 0 3 0 2 10 4 7 t p0 10 4 7 7 4 3 0 1 0 10 5 7 tt0状态是安全2、p1请求资源p1 请求向量request1(1,0,2)系统按银行家算法进行检查: req

12、uest1(1,0,2)need1(1,2,2) request1(1,0,2)available(3,3,2) 系统先假定为p1分配资源,并求该数据结构的值 available = available- request1=(2,3,0) allocation1 = allocation1+request1=(3,0,2) need1 = need1-request1:=(0,2,0) 系统调用安全性算法,检查其安全性 work need allocation work+ allocation finishp1 2 3 0 0 2 0 3 0 2 5 3 2 tp3 5 3 2 0 1 1 2

13、 1 1 7 4 3 tp4 7 4 3 4 3 1 0 0 2 7 4 5 tp0 7 4 5 7 4 3 0 1 0 7 5 5 tp2 7 5 5 6 0 0 3 0 2 10 5 7 t状态是安全,p1的请求能满足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请求向量request0(0,2,0)系统按银行家算法进行检查: request0(0,2,0)need0(7,4,3) request0

14、(0,2,0)available(2,3,0) 系统先假定为p0分配资源,并求该数据结构的值 available:= available- request0=(2,1,0) allocation0:= allocation0+request0=(0,3,0) need0:= need0-request0:=(7,2,3) 系统调用安全性算法,检查结果为不安全银行家算法的优缺点 本算法要求被分配每类资源数量是固定不变。 本算法要求用户数固定不变。 本算法保证所有用户的要求在有限时间内得到,实时较差。 本算法要求用户事先说明他的最大资源要求,这对用户较难。 7.5 死锁的检测与恢复 死锁检测的概念

15、 资源分配图 资源分配图的化简 死锁检测中数据结构 检测死锁的算法 死锁的恢复一、死锁检测 允许死锁发生。操作系统不断监视系统进展情况,判断死锁是否发生。 一旦死锁发生则采取专门的措施,解除死锁并以最小的代价恢复操作系统运行二、资源分配图 用有向图描述进程的死锁 资源分配图表示法资源类(资源的不同类型)用方框表示资源实例(存在于每个资源中的若干同种 资源)用方框中的黑圆点表示进程用圆圈中加进程名表示分配边:资源实例进程的一条有向边申请边:进程资源类的一条有向边有环有死锁有环无死锁死锁定理 如果资源分配图中没有环路,则系统中没有死锁;如果图中存在环路则系统中可能存在死锁 如果每个资源类中只包含一

16、个资源实例,则环路是死锁存在的充分必要条件三、资源分配图化简如果一个进程所需的资源都满足,则对该进程结点化简。化简的方法:移走所有分配边和申请边。如果图中所有的进程结点均可化简成为孤立的结点,则该状态是安全的,否则是不安全的。四、死锁检测中数据结构 可利用资源available,它表示m类资源中每类资源可用数目。 请求矩阵request ,一个mn矩阵,用以表示进程当前对各类资源的请求数目。 分配矩阵allocation,一个mn矩阵,用以表示某一时刻的资源的分配情况。 工作向量work,表示系统可提供的各类资源的数目。 进程向量l,记录当前已不占用资源的各进程。五、检测死锁的算法 把某时刻t的可用资源向量available赋予work 把不占用资源的进程向量记入表l。 从进程集合中找到一个requesti work的进程,做如下处理: 1.将其资源分配图化简 work:= work+ allocationi 2.将它记入l表中 若不能把所有进程都记入l表,则状态s资源分配图不可完全化简,该系统发生死锁。六、死锁的恢复 强制性撤消死锁的进程并剥夺资源 撤消的次序: 使用最少处理器时间的进程 使用最少输出工作量的进程 具有最多剩余时间的进程 分得最少资源的进程 最小优先级的进程 挂起和解除挂起作业1:假定一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论