安徽大学操作系统处理机调度与死锁.ppt

安徽大学操作系统处理机调度与死锁.ppt

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
安徽大学计算机科学与技术学院 计算机操作系统 杨为民 m0304abc@126.com 3.5 产生死锁的原因和必要条件 3.5.1 产生死锁的原因 3.5.2 产生死锁的必要条件 3.5.3 处理死锁的基本方法 3.5.1 产生死锁的原因 产生死锁的原因: (1) 竞争资源。 (2) 进程间推进顺序非法。 3.5.1 产生死锁的原因 1. 竞争资源引起进程死锁 可剥夺和非剥夺性资源: 内存为可剥夺性资源; 打印机为非剥夺性资源。 3.5.1 产生死锁的原因 2) 竞争非剥夺性资源 3.5.1 产生死锁的原因 3) 竞争临时性资源 3.5.1 产生死锁的原因 2. 进程推进顺序不当引起死锁 1) 进程推进顺序合法 3.5.1 产生死锁的原因 2) 进程推进顺序非法 若并发进程P1和P2按曲线④所示的顺序推进,它们将进入不安全区D内。此时P1保持了资源R1, P2保持了资源R2, 系统处于不安全状态。 因为,这时两进程再向前推进,便可能发生死锁。 例如,当P1运行到P1:Request(R2)时,将因R2已被P2占用而阻塞;当P2运行到P2: Request(R1)时,也将因R1已被P1占用而阻塞,于是发生了进程死锁。 3.5.2 产生死锁的必要条件 产生死锁的必要条件: (1) 互斥条件 (2) 请求和保持条件 (3) 不剥夺条件 (4) 环路等待条件 3.5.3 处理死锁的基本方法 处理死锁的基本方法: (1) 预防死锁:限制条件 (2) 避免死锁:防止进入不安全状态 (3) 检测死锁:检测进程和资源 (4) 解除死锁:解脱死锁进程 3.6 预防死锁的方法 3.6.1 预防死锁 3.6.2 系统安全状态 3.6.3 利用银行家算法避免死锁 3.6.1 预防死锁 预防死锁: 1. 摒弃“请求和保持”条件 2. 摒弃“不剥夺”条件 3. 摒弃“环路等待”条件 3.6.2 系统安全状态 1. 安全状态 在避免死锁的方法中,允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程;否则,令进程等待。 所谓安全状态,是指系统能按某种进程顺序(P1, P2, …,Pn)(称〈P1, P2, …, Pn〉序列为安全序列),来为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。如果系统无法找到这样一个安全序列,则称系统处于不安全状态。 3.6.2 系统安全状态 2. 安全状态之例 我们通过一个例子来说明安全性。假定系统中有三个进程P1、 P2和P3,共有12台磁带机。进程P1总共要求10台磁带机,P2和P3分别要求4台和9台。假设在T0时刻,进程P1、P2和P3已分别获得5台、2台和2台磁带机,尚有3台空闲未分配,如下表所示: 3.6.2 系统安全状态 3. 由安全状态向不安全状态的转换 如果不按照安全序列分配资源,则系统可能会由安全状态进入不安全状态。例如,在T0时刻以后,P3又请求1台磁带机,若此时系统把剩余3台中的1台分配给P3,则系统便进入不安全状态。因为,此时也无法再找到一个安全序列,例如,把其余的2台分配给P2,这样,在P2完成后只能释放出4台,既不能满足P1尚需5台的要求,也不能满足P3尚需6台的要求,致使它们都无法推进到完成,彼此都在等待对方释放资源,即陷入僵局,结果导致死锁。 3.6.3 利用银行家算法避免死锁 银行家算法的实质:要设法保证系统动态分配资源后不进入不安全状态,以避免可能产生的死锁。 银行家算法的执行有个前提条件,即要求进程必须预先提出自己的最大资源请求数量,这一数量不可能超过系统资源的总量,系统资源的总量是一定的。 3.6.3 利用银行家算法避免死锁 1. 银行家算法中的数据结构 (1) 可利用资源向量Available。这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。如果Available[j]=K,则表示系统中现有Rj类资源K个。 3.6.3 利用银行家算法避免死锁 (2) 最大需求矩阵Max。这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。 (3) 分配矩阵Allocation。这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的数目为K。 (4) 需求矩阵Need。这也是一个n×m的矩阵,用以表示每一个进程尚需

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档