操作系统第6章_并发死锁和饥饿.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
并发性:死锁和饥饿 死锁原理 死锁是多个进程因竞争资源且推进顺序不合理而造成的一种僵局,若无外力作用,这些进程将永远不能再向前推进 死锁的起因:竞争资源 一组死锁进程:一组进程中的所有进程都在等待一个事件(等待请求资源的释放)只能在进程集合中的其他阻塞进程才能触发该事件 通过“先来先服务”资源分配策略避免饿死. 可重用资源与可消费资源 可重用资源 一次只能供一个进程安全地使用, 且不会由于使用而耗尽 例子: 处理器, I/O通道, 主存和辅存, 设备, 文件、数据库、信号量等数据结构 可消费资源 可以创建(生产)并且可以销毁(消费)的资源 数目没有限制, 当一个进程得到一个可消费资源时, 这个资源就不再存在了 例子: 中断, 信号, 消息, I/O缓冲区中的信息 请求主存(可用分配空间200KB) 通过使用虚拟存储技术解决问题 可消费资源 引发死锁的原因是一个设计错误。 有的程序使用了相当长一段时间甚至几年后,才可能出现这类问题。 资源分配图 刻画进程资源分配的有效工具 资源类(资源的不同类型):方框 资源实例(存在于每个资源类中):黑圆点 进程:圆圈中加进程名 分配边:资源实例指向进程的一条有向边 申请边:进程指向资源类的一条有向边 有环有死锁 有环无死锁 如果资源分配图中没有环路,则系统中没有死锁,如果图中存在环路则系统中可能存在死锁 如果每个资源类中只包含一个资源实例,则环路是死锁存在的充分必要条件 死锁的检测与解除 解决死锁的另一条途径是死锁检测,通常采用化简资源分配图的方法,其过程如下: (1)在图中找一个进程顶点P1,P1的请求边均能立即满足。 (2)若找到这样的P1,则将与其相连的边全部删去,转至(1),否则化简结束。 如果化简后所有的进程顶点都成了孤立点,就称之为完全化简,且无死锁现象,反之则称之为不完全化简,且非孤立点的进程处于死锁状态。一旦发现死锁应立即排除,以确保系统正常运行,常采用资源剥夺法和撤消进程法。 一般地,可以把死锁描述为:有并发进程P1,P2,…,Pn,它们共享资源R1,R2,…,Rm(n0,m0,n=m)。其中,每个Pi(1≤i≤n)拥有资源Rj(1 ≤j ≤m),直到不再有剩余资源。同时,各Pi又在不释放Rj 的前提下要求得到Rk(k≠j,1 ≤k≤m),从而造成资源的互相占有和互相等待。在没有外力驱动的情况下,该组并发进程停止往前推进,陷入永久等待状态。 死锁的起因 死锁的起因是并发进程的资源竞争。产生死锁的根本原因在于系统提供的资源个数少于并发进程所要求的该类资源数。可以采用适当的资源分配算法,以达到消除死锁的目的。为此,先看看产生死锁的条件。 产生死锁同时满足下列四个条件: 互斥条件 占有且等待条件 非抢占(不可剥夺条件) 循环等待条件 显然,只要使上述4个条件中的某一个不满足,则死锁就可以排除。 互斥条件 指进程对所分配到的资源进行互斥使用,某资源只由一个进程占有 如果还有其他进程要求该资源,要求者只能阻塞,直至占有该资源的进程释放 占有及等待条件 进程已经占某些资源,但可以提出新的资源要求 若该资源已被其它进程占有, 则请求进程阻塞,同时对已经获得的资源保持不放 不可剥夺条件 进程已获得的资源在未使用完之前不能被剥夺,只能在使用完时由自己释放 环路等待条件 资源分配图中存在环路 死锁的现象 1 互斥条件:每条道路只能通过一个方向车 2 保持并请求(部分分配):占用一段道路并等待前方道路的释放 3 不剥夺:单行线不能超越抢道 4 环路条件:如图 第四个条件实际上是 前三个条件的潜在结果 死锁的预防 根据产生死锁的四个条件,只要使其中之一不能成立,死锁就不会出现。 间接的死锁预防方法: (1)破坏互斥条件: (2)破坏占有等待条件: (3)破坏非剥夺条件: 直接的死锁预防方法: (4)破坏循环等待条件: 破坏互斥条件 解决 允许多个进程同时使用资源 缺点 不适用于绝大多数资源 适用条件范围: 允许多个进程同时使用(如文件允许多个读访问) 改造成多个进程同时使用(Spooling技术) 破坏占有且等待条件 解决 要求所有进程在开始时一次性地申请在整个运行过程所需的全部资源 缺点 一个进程可能被阻塞很长时间,实际只需要小部分资源就可运行 一个进程事先不可能知道它所需要的全部资源 破坏不可剥夺条件 解决 如果占有了某些资源的进程进一步提出新的资源请求被拒绝,必须释放它已经占有的所有资源, 待以后需要时再重新申请 由操作系统剥夺一个进程占有的资源, 分配给其他进程 缺点 资源的状态可以很容易地保存和恢复 破坏环路等待条件 解决 对所有资源按类型进行按序排队,进程申请资源严格按资源序号递增(或递减)的顺序 缺点 执行速度变慢、拒绝一般的资源访问 证明:略 死

文档评论(0)

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

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

1亿VIP精品文档

相关文档