第三单元—C死锁.pptVIP

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三单元—C死锁

一、资源的概念 OS是计算机系统中资源的管理者,而进程是竞争资源的基本单位,故对系统中所有进程的资源分配工作,都由OS完成。 研究资源分配时,我们必须弄清楚该资源是可以被几个进程同时使用,还是只能为一个进程使用,资源的不同使用性质正是引起系统死锁的原因。 资源的分类 根据资源性质:可剥夺(抢占)和不可剥夺(非抢占)资源。 可抢占资源—指占用资源的进程虽然还需要使用该资源,但另一个进程却强行把资源抢走。 不可抢占资源—指只有占用者进程不再需要使用该资源而主动释放资源外,其它进程不得在占有者进程使用资源过程中强行抢占。 二、死锁的定义 计算机系统中多道程序并发执行时,两个或两个以上的进程由于竞争资源而造成的一种互相等待的现象(僵局),如无外力作用,这些进程将永远不能再向前推进。 死锁Deadlock:系统中存在一组进程(两个或多个进程),它们中的每一个进程都占用了某种资源而又都在等待其中另一进程所占用的资源,这种等待永远不能结束,则说系统出现了“死锁”,或说这组进程处于死锁状态。 陷入死锁状态的进程称为死锁进程,所占用的资源或者需要它们进行某种合作的其它进程就会相继陷入死锁,最终可能导致整个系统处于瘫痪状态。 死锁和饥饿的主要差别是什么? 三、产生死锁的原因 1 竞争资源 当系统中供多个进程所共享的资源,不足以同时满足它们的需要时,引起它们对资源的竞争而产生死锁; 进程推进的顺序不当 进程在运行过程中,请求和释放资源的顺序不当,导致进程的死锁。 例题: 一个OS有20个进程,竞争使用65个同类资源,申请方式是逐个进行的,一旦某个进程获得它所需要的全部资源,则立即归还所有资源。每个进程最多使用三个资源。若仅考虑这类资源,该系统有无可能产生死锁,为什么? 例1:进程推进顺序不当产生死锁问题. 例2:PV操作使用不当产生死锁. 例3:同类资源分配不当引起死锁. 例4:对临时性资源使用不加限制引起死锁 综上:产生死锁的因素不仅与系统拥有的资源数量有关,而且与资源分配策略,进程对资源的使用要求以及并发进程的推进顺序有关。 但以下两种情况进程永远等待不属于要讨论的死锁问题: (1)某个进程申请系统中不存在的资源或申请的资源数超过了系统拥有的最大资源数。 (2)硬件故障或程序性错误引起的循环等待。 四、产生死锁的四个必要条件 ⑴互斥条件:资源在一段时间内只能被一个进程所使用。(临界资源) ⑵请求和保持条件:一个进程请求资源得不到满足而等待,但不释放已占有的资源。(部分分配) ⑶不剥夺条件:一个资源仅能被占有它的进程所释放,而不能被其他进程剥夺。(主动释放) ⑷环路等待条件:存在一个进程资源的环路链,链中每一个进程占用着某些资源,又在等待另一个进程占有的资源。 解决死锁的方法一般可分为:预防、避免、检测和解除四种. 死锁的排除方法 1 鸵鸟算法 2 预防死锁 3 避免死锁 4 检测和解除死锁 2 预防死锁 根据产生死锁的四个必要条件,只要使其中之一不能成立,死锁就不会出现。但必要条件1是由设备的固有特性所决定的,不仅不能改变,相反还应加以保证,因此实际上只有三种方法。 预防死锁是一种较易实现的方法,已被广泛使用,但由于所施加的限制条件往往太严格,可能导致系统资源利用率和系统吞吐量降低。 采用的策略:一个已经占有了某些资源的进程,当它再提出新的资源要求而不能立即得到满足时,必须释放它已经占有的所有资源,待以后需要时再重新申请。 缺点: 1)实现比较复杂,且要付出很大代价; 2)还因为反复地申请和释放资源,而使进程的执行无限地推迟,延长了周转时间,增加了系统的开销,降低了系统吞吐量(例如打印机打印的结果不连续) 3. 防止“环路等待”条件的出现(层次分配策略) 优点:资源利用率和系统吞吐量与另两种方法相比有较明显的改善 缺点: 1)为系统中各种类型的资源所分配的序号必须相对稳定,这就限制了新设备类型的增加; 2) 进程实际使用资源的顺序与系统规定的顺序不同而造成资源的浪费; 安全状态的例子 例:假定系统有三个进程P1、P2、P3,共有12台磁带机。进程P1 、P2和P3分别需要10台、4台和9台。设在T0时刻,进程P1、P2和P3已经获得5台、2台和2台,还有3台空闲没有分配。 银行家算法 银行家算法是最有代表性的避免死锁算法,是Dijkstra提出的银行家算法。这是由于该算法能用于银行系统现金贷款的发放而得名。 要记住的一些变量的名称 1 Available(可利用资源总数)

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档