windows操作系统概述_第1页
windows操作系统概述_第2页
windows操作系统概述_第3页
windows操作系统概述_第4页
windows操作系统概述_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

第十讲死锁

目的与要求:了解死锁的定义,掌握死锁预防,了解死锁避免,死锁检测,死锁恢复的方法。重点与难点:死锁预防法则的使用。作业:21,224.4死锁

4.4.1死锁示例

日常生活中的例子进程死锁的例子竞争外部设备竞争辅存空间编程错的例子4.4.2死锁定义及性质

死锁定义

在一个进程集合中,若每个进程都在等待某些事件(指:释放资源)的发生,而这些事件又必须由这个进程集合中的某些进程来产生,就称该进程集合处于死锁状态。

死锁定义及性质出现死锁的系统必须同时满足下列四个必要条件互斥:必须存在需要互斥使用的资源占有等待:一定有占有资源而又等待其它资源的进程非剥夺:系统中进程占有的资源未主动释放时不可以剥夺循环等待:进程集合{P0,P1,……,Pn},Pi等待Pi+1,Pn等待P0

死锁定义及性质资源分配图定义资源分配图由如下部件组成:

如果各类资源数为1,则系统出现死锁的充要条件是资源分配图含圈Pi.....死锁研究的主要内容

死锁防止死锁避免死锁检测死锁恢复

无死锁系统允许死锁、出现排除

4.4.3死锁防止

逻辑公式:

D→C1∧C2∧C3∧C4

C1∨C2∨C3∨C4→D破坏互斥占用条件 让资源都能共享使用(但有些资源必须互斥使用)破坏占有等待条件将进程所要资源一次性分给进程,要么没分到一个资源,要么全部满足(适合廉价资源的分配,如外存空间分配)进程在下一轮申请资源时,释放所占的所有资源(用完一个再用下一个)破坏非剥夺条件(用于内存管理、CPU管理等)当进程Pi申请ri类资源时,若有则分配,若没有则剥夺(释放)Pi占有的所有资源;当进程Pi申请ri类资源时,若有则分配,若无则剥夺(淘汰)占有ri类资源进程所占的ri类资源分配给Pi;或看占用ri类资源的Pk处于什么状态,若处于等资源状态,则剥夺其资源,否则让Pi等待,等于剥夺Pi的资源。破坏循环等待条件 采用资源顺序分配方法:给每类资源编号,进程只能按序号由小到大的顺序申请资源,若不满足则拒绝分配。反证:若出现循环等待,则必会有小序号资源序号>大序号资源序号。4.4.4死锁避免银行家算法(在系统处理资源申请时,判断在满足申请时,系统是否还处于安全状态?是则满足本次资源申请

,否则拒绝。依此引导进程运行次序)单类资源系统安全状态定义:设系统中有n个进程,若存在一个序列〈P1,P2…Pn〉使得Pi(i=1,2…n)以后还需要的资源可以通过系统现有资源加上所有Pj(j<i)占有的资源来满足,则称这个系统处于安全状态,序列〈P1,P2…Pn〉称为安全序列。举例

设银行家有10万贷款,P,Q,R分别需要8,3,9万元搞项目(假设任何人满足资金总额后都会归还所有贷款),如果P已申请到了4万,Q要申请2万,显然,如果满足Q的申请,有安全序列<P,Q,R>/<Q,P,R>。 但如果R要申请4万,显然,如果满足R的申请,则不存在安全序列。扩展的银行家算法描述

n:系统中的进程个数。m:系统中的资源类型数。Available(1:m):现有资源向量。Available(j)=k表示有k个未分配的j类资源。Max(1:n,1:m):资源最大申请量矩阵。Max(i,j)=k表示第i个进程对第j类资源的最大申请量为k.Allocation(1:n,1:m):资源分配矩阵。Allocation(i,j)=k表示进程i已占有k个j类资源。Need(1:n,1:m):进程以后还需要的资源矩阵。Need(i,j)=k表示第i个进程以后还需要k个第j类资源。显然Need=Max-AllocationRequest(1:n,1:m):进程申请资源矩阵。Request(i,j)=k表示进程i申请k个第j类资源。资源分配程序的工作过程:

当进程提出资源申请时,系统首先检查该进程对资源的申请量是否超过其最大需求量及系统现有资源能否满足进程需要。若能则进一步检查:若把资源分给该进程系统能否处于安全状态。若安全则分配,否则置该进程为等待资源状态。

为简单起见,记Ai为A(i,1),A(i,2)…A(i,m)。其中A为n×m矩阵。

定义长度为m的向量X、Y间的关系为:

X≤Y当且仅当X(i)≤Y(i)(i=1,2…m)1、如果Requesti>Needi则报错返回。2、如果Requesti>Available,则进程i进入等待资源状态,返回。3、假设进程i的申请已获准,于是修改系统状态:

Available=Available-Requesti

Allocationi=Allocationi+Requesti

Needi=Needi-Requesti

4、调用安全状态检查算法。设进程i申请资源,申请资源向量为Requesti,则有如下的资源分配过程:(续)5、若系统处于安全状态,则将进程i申请的资源分配给进程i,返回。6、若系统处于不安全状态,则进程i进入等待资源状态,并恢复系统状态后返回:

Available=Available+Requesti

Allocationi=Allocationi-Requesti

Needi=Needi+Requesti安全状态检查算法:设Work(1:m)为临时工作向量。初始时Work=Available.令N={1,2…n}1、寻找j∈N使其满足Needj≤Work,若不存在这样的j则转(3)2、Work=Work+AllocationjN=N-{j},

转(1)3、如果N为空则返回(系统安全);如果N

不为空则返回(系统不安全)。举例AllocationMaxRequest availableP1124258121133P2033444300P3411544122如果p1先申请,无安全序列。如果p3申请,可有安全序列<p3,p2,p1>或<p3,p1,p2>。 4.4.5死锁检测资源分配图的简化过程:1.在图中找一个进程顶点Pi,Pi的请求边均能立即满足。2.若找到这样的Pi则将与Pi相连的边全部删去,转(1);否则化简过程结束。

采用化简资源分配图的方法可以检测系统中有无进程处于死锁状态。如果化简后所有的进程顶点都成了孤立点,则称该图可完全化简;否则称该图是不可完全化简的。系统中有死锁的充分必要条件是资源分配图不可完全化简。死锁检测算法设Work(1:m)为临时工作向量。初始时Work=Available.令N={1,2…n}寻找j∈N使其满足Requestj≤Work,若不存在这样的j则转(3)Work=Work+AllocationjN=N-{j},转(1)如果N为空则无死锁;如果N不为空则有死锁,N就是处于死锁状态的进程集合4.4.6死锁恢复检测出死锁后的处理破坏循环等待(杀掉有关进程)4.4.7死锁的综合处理

把系统中的资源分成几大类,整体上采用资源顺序分配法,再对每类资源根据其特点选择最适合的方法。例如:(1)主存、处理机--剥夺法(2)辅存--预分配法(3)其他--死锁检测交通死锁的示例让路!让路!让路!让路! 进程A 进程B ①申请输入设备 ①申请输出设备 ②申请输出设备 ②申请输入设备 ③释放输入设备 ③释放输出设备 ④释放输出设备 ④释放输入设备如果执行次序为:进程A①→进程B①...,则发生死锁。输入设备输出设备

温馨提示

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

评论

0/150

提交评论