第四章_死锁-1.ppt

  1. 1、本文档共62页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * 1、A 2、不会 3、4 * * 5.D * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 银行家算法-单个资源的银行家算法 设银行家有10万贷款,P,Q,R分别需要8,3,9万元搞项目(假设任何人满足资金总额后都会归还所有贷款) 如果P已申请到了4万,Q申请2万,R申请2万,则银行家还剩2万 此时,如果Q又申请1万 显然,如果满足Q的申请,有安全序列 QPR 如果Q申请之后,R要申请4万。如果满足R的申请,则不存在安全序列 资源分配程序的工作过程 当进程提出资源申请时 系统首先检查 该进程对资源的申请量是否超过其最大需求量 系统现有资源能否满足进程需要 若能则进一步检查 若把资源分给该进程系统能否处于安全状态 若安全则分配,否则置该进程为等待资源状态 目前占有量 最大需求量 尚需要量 P1 2 9 7 P2 5 10 5 P3 2 4 2 系统剩余资源量 3 系统处于安全状态,安全序列为P3 P2 P1 例:12个同类资源供3个进程共享 P1提出再申请一个资源 目前占有量 最大需求量 尚需要量 P1 3 9 6 P2 5 10 5 P3 2 4 2 系统剩余资源量 2 系统处于不安全状态 n:系统中进程的总数 m:资源类总数 Available:可使用资源向量 ARRAY[1..m] of integer; Available[j]=k 表示系统中有k个j类资源。 Max:最大需求矩阵 ARRAY[1..n,1..m] of integer; Max[i,j]=k 表示进程i最多需要k个j类资源。 银行家算法-多个资源的银行家算法 Allocation:分配矩阵 ARRAY[1..n,1..m] of integer; Allocation[i,j]=k 表示进程i当前已分得k个j类资源。 Need:需求矩阵 ARRAY[1..n,1..m] of integer; Need[i,j] 表示进程i还需要k个j类资源。 Request:进程申请资源向量 ARRAY[1..n,1..m] of integer; Request[i,j] 表示进程i需要申请k个j类资源。 银行家算法-多个资源的银行家算法 简记符号: Available Max[i] Allocation[i] Need[i] Request[i] 银行家算法-多个资源的银行家算法 当进程pi提出资源申请时,系统执行下列步骤: (1)若Request[i]≤Need[i],转(2); 否则错误返回 (2)若Request[i]≤Available, 转(3);否则进程等待 银行家算法-多个资源的银行家算法 (3)假设系统分配了资源,则有: Available:=Available-Request[i]; Allocation[i]:= Allocation[i]+Request[i]; Need[i]:=Need[i]-Request[i] 若系统新状态是安全的,则分配完成 若系统新状态是不安全的,则恢复原状态,进程等待 银行家算法-多个资源的银行家算法 为进行安全性检查,定义数据结构: Work:ARRAY[1..m] of integer; Work[i]=k 表示剩余i类资源k个。 Finish:ARRAY[1..n] of Boolean; Finish[i]=true 表示进程i能获得所需资源执行 完毕,并能释放全部获得资源。初值为False. 银行家算法-多个资源的银行家算法 安全性检查的步骤: (1) Work:=Available; Finish:=false; (2) 寻找满足条件的i: a.Finish[i]=false; b.Need[i]≤Work; 如果不存在,则转(4) 银行家算法-多个资源的银行家算法 (3) Work:=Work+Allocation[i]; Finish[i]:=true; 转(2) (4) 若对所有i,Finish[i]=true,则系统处于安全状态,否则处于不安全状态 银行家算法-多个资源的银行家算法 多个资源的银行家算法实例 3类资源A、B、C。A=10,B=5,C=7。现有5个进程P1、P2、P3、P4、P5. 资源申请 进程 目前占有量 最大需求量 尚需要量 A B C A B C A B C P1 0 1 0 7

文档评论(0)

2232文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档