- 1、本文档共46页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TechEd 2002 死 锁 一、死锁定义 二、死锁的示例 当两个进程以如下顺序推进: →T占有资源D; →C占有资源U; →T申请资源U,则T阻塞; →C申请资源D,则C阻塞。 这两个进程将永远等下去,形成僵局。 从图中可见:进程与资源形成了回路(进程—资源循环回路),系统进入死锁状态。 一、产生死锁的四个必要条件 二、死锁的预防 举例:系统中编号如下: 打印机 1 绘图仪 2 磁带机 3 CD—ROM 4 分配原则:已占有高号资源者不能再申请低号资源。进程可先申请得到打印机,后申请磁带机;但不可先申请得到了绘图仪,再申请打印机 总有一个被分配的资源是编号最高的,占有该资源的进程不可再申请其它已经被占有的各种资源。 资源排序原则:较为紧缺的资源排号为大。 一、单种资源的“银行家算法” 二、多种资源的“银行家算法” §3.7 死锁的避免(银行家算法) 3. 假定B进程完成,系统收回其资源(4个),资源使用情况如表e。4. 比较现在资源余数(5)与剩余未完成进程的“尚需资源”。可见,若将5个资源分配给C,就能达到C的“最大需求”,使C进程完成。假设系统分配5个资源给C,情况如表f。 7 0 3 已有量 0 7 C 0 — B 6 9 A 尚需资源 最大需求 进程 2 0 3 已有量 5 7 C 0 — B 6 9 A 尚需资源 最大需求 进程 表f. 假设完全满足C后情况资源余数:0 表e. 系统回收B全部资源资源余数:5 §3.7 死锁的避免(银行家算法) 0 0 3 已有量 0 — C 0 — B 6 9 A 尚需资源 最大需求 进程 表g.系统回收C全部资源资源余数:7 5. 假定C进程完成,系统收回其资源(7),资源使用情况如表g。6. 比较现在资源余数(7)与A的“尚需资源”(6)。可见,能满足A进程全部需要,使A进程完成。7. 结论:如接受B一个资源的请求,存在安全序列B,C,A,所导致的系统状态是安全的,没有发生死锁的可能。 0 0 0 已有量 0 — C 0 — B 0 — A 尚需资源 最大需求 进程 表h. 3进程全部完成资源余数:10 §3.7 死锁的避免(银行家算法) 举例2:系统中有某种资源,总量为10,现有3个进程,当运行到某一时刻,资源使用情况如表a。现进程A提出一个资源请求,系统采用“银行家算法”来测试死锁的可能性。 2 2 3 已有量 5 7 C 2 4 B 6 9 A 尚需资源 最大需求 进程 表a.系统某时刻状态资源余数:3 §3.7 死锁的避免(银行家算法) 2 2 4 已有量 5 7 C 2 4 B 5 9 A 尚需资源 最大需求 进程 2 4 4 已有量 5 7 C 0 4 B 5 9 A 尚需资源 最大需求 进程 表b. 资源余数:2 表c. 资源余数:0 1. 系统假定接受请求,将一个资源分配给A,资源使用情况如表b。2. 比较资源余数与各进程“尚需资源”。可见,现在系统能满足B的所有需求,使B进程完成。假设系统先满足B,分配2个资源给B,情况如表c。 §3.7 死锁的避免(银行家算法) 2 0 4 已有量 5 7 C 0 4 B 5 9 A 尚需资源 最大需求 进程 表d. 资源余数:4 3. 假定B进程完成,系统收回其资源(4个),资源使用情况如表d。 4. 比较资源余数与各进程“尚需资源”。可见,现在系统对A和C的最大需求均不能满足,因此A进程和C进程的完成都有潜在的危机。 5. 结论:如接受A进程1个资源的请求,所导致的系统状态将是不安全的,有产生死锁的可能。 §3.7 死锁的避免(银行家算法) 设置2张表: 记录已经分配给各进程的资源数; 记录各进程还需资源数。 设置3个向量: 系统资源总数E向量; 已分配资源数P向量; 系统剩余资源数A向量。 §4.3 死锁的避免(银行家算法) 执行步骤: 假设接受某一进程的资源请求,为此需修改向量P和A。 逐行检查还需资源表,是否有一个进程的行向量小于或等于剩余数向量A。如没有,则系统有死锁可能,算法终止。 如存在这种进程,则假定满足其全部分配,让进程完成,然后系统回收其全部资源,修改剩余数向量A和已分资源数向量P。 重复步骤2和步骤3,直到无法找到行向量小于等于A向量的进程。 检查是否每一个进程都能完成。如是,则该次分配假设成功,系统状态安全;反之,则系统状态不安全。 §4.3 死锁的避免(银行家算法) 举例3:现系统内有5个进程,资源情况如资源总数所示(磁带机
文档评论(0)