- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
摒弃“请求和保持”条件 系统规定所有进程在开始运行之前,都必须一次性地申请其在整个运行过程所需的全部资源。 优点:简单、易实现且安全 摒弃“请求和保持”条件的缺点 资源被严重浪费,恶化了系统的利用率; 使进程延迟运行。 摒弃“不剥夺”条件 进程逐个地提出资源要求。当一个已经保持了某些资源的进程,再提出新的资源请求而不能立即得到满足时,必须释放它已经保持了的所有资源,待以后许需要时再重新申请。 进程已经占有的资源,在运行过程中会被暂时地释放掉,可认为是被剥夺 。 摒弃“不剥夺”条件的缺点 实现较复杂.代价大。 可能因为反复地申请和释放资源,而使进程的执行无限地推迟、延长了进程的周转时间增加系统开销、降低系统吞吐量。 摒弃“环路等待”条件 系统将所有的资源按类型进行线性排队,并赋予不同的序号。所有进程请求资源严格按资源序号递增的次序提出,防止出现环路. 摒弃“环路等待”条件的缺点 (1)序号必须相对稳定,限制了新设备类型的增加。 (2)作业(进程)使用资源顺序与系统规定的顺序不同而造成资源的浪费。 例如,某进程先用磁带机.后用打印机,但按系统规定该进程应先申请打印机而后申请磁带机,使先打印机长期闲置。 (3)限制了用户编程。 系统安全状态 指系统能按某种顺序如(P1,P2,…,Pn) ,来为每个进程分配其所需资源,直至最大需求,使每个进程都可顺序完成。若系统不存在这样一个安全序列、则称系统处于不安全状态。 系统进入不安全状态后可能 进入死锁 只要系统处于安全状态,系统便可避免进入死锁状态。 避免死锁的实质:如何使系统不进入不安全状态。 例:假定系统有三个进程P1、P2、P3.共有12台磁带机。进程P1总共要求10台磁带视,P2和P3分别要求4台和9台。 设在T时刻,进程P1、 P2、P3已分别获得;5台、2台和2台、尚有3台空闲未分. 判断系统在T时刻的安全性。 银行家算法避免死锁 1. 银行家算法中的数据结构 2. 银行家算法 3. 安全性算法 4. 银行家算法之例 银行家算法的数据结构 (1)可利用资源向量Available。 (2)最大需求矩阵Max。 (3)分配矩阵Allocation。 (4)需求矩阵Need。 可利用资源向量Available 含有m个元素 每个元素代表一类可利用的资源数目 初值是该类全部可用资源的数目 数值随该类资源的分配和回收而动态地改变。 如:Available[j]=K,表示系统中现有Rj类资源K个。 最大需求矩阵Max n*m的矩阵 定义了n个进程中的每一个进程对m类资源的最大需求。 如:Max[i,j]=K,表示进程i需要Rj类资源的最大数值为K。 分配矩阵Allocation n*m的矩阵 定义了系统中每一类资源当前已分配给每一进程的资源数。 如:Allocation[i,j]=K,表示进程i当前以分得Rj类资源的数目为K。 需求矩阵Need n*m的矩阵 表示每一个进程尚需的各类资源数。 如:Need[i,j]=K,表示进程i还需要Rj类资源K个,方能完成其任务。 银行家算法 设Requesti是进程pi的请求向量。如果Requesti [j]=k,表示进程pi只需要k个Rj类型的资源。 pi发出资源请求后.按下述步骤检查: (1) Requesti [j] ≤Need[i,j],则转向步骤2;否则,认为出错 (2) Requesti [j] ≤Available[j]则转向步骤3;否则,进程pi等待 (3)系统试探着把资源分给进程pi : Available[j]:= Available[j]- Requesti [j] Allocation[i,j]:= Allocation[i,j]=+ Requesti [j] ; Need[i,j]= Need[i,j]- Requesti [j] ; (4)系统执行安全性算法.检查此次资源分配后,系统是否处于安全状态。若安全,才将资源分配给进程;否则.将试探分配作废.恢复原来的资源分配状态、让进程pi等待。 安全性算法 (一)设置两个向量 工作向量Work:供进程继续运行的各类资源数,含m个元素,初值Work:=Available Finish:表示系统是否有足够的资源分配给进程。初值: Finish[i]:=false, 当有足够资源分配时Finish[i]:=true. (二)找满足下列条件的进程: Finish[i]:=false Need[i,j]≤Work[j]; 若找到执行步(三)否则执行步骤(四) (三) Work[j]:= Work[i]+Allocation[i,j]; Fini
文档评论(0)