正在加载图片...
的需求向量,由矩阵Need的第i行构成。 上述三个矩阵间存在关系 Need (i, j)=Max(i, j)-Allocation (i, j) 银行家算法如下 Request是进程Pi的请求向量。 Request(j)表示进程Pi请求分配R类资源k个。 当Pi发出资源请求后,系统按下述步骤进行检查z 1)如果 Request<=Need,则转向步骤(2);否则,认为出错,因为它所需要的资源数已超过 它所宣布的最大值。 (2)如果 Request<= Available,则转向步骤(3);否则,表示系统中尚无足够的资源满足Pi 的申请,Pi必须等待。 (3)系统试探把资源分配给进程Pi,并修改下面数据结构中的数值: Available =Available-Requesti Allocation=Allocationi+Request Needi=Needi-Requesti: (4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将 资源分配给进程Pi,以完成本次分配:否则,将试探分配作废,恢复原来的资源分配状态,让进 程Pi等待 系统所执行的安全性算法描述如下 (1)设置两个向量 Work它表示系统可提供给进程继续运行的各类资源数目,它含有m个元素,开始执行安 全性算法时,Work= Availabh Finish它表示系统是否有足够的资源分配给进程,使之运行完成,开始时, Finish(i)= false:当有足够资源分配给进程Pi时,令 Finish(i)=true. (2)从进程集合中找到一个能满足下述条件的进程 Finish (i)=false Needi<=Work 如找到则执行步骤(3):否则,执行步骤(4) (3)当进程Pi获得资源后,可顺利执行直到完成,并释放出分配给它的资源,故应执行 Work =work+Allocation Finish (i)=true (4)若所有进程的 Finish(i)都为true,则表示系统处于安全状态:否则,系统处于不安全 状态 5.死锁的检测和解除 (1)死锁的检测 前面介绍的死锁预防和避免算法都是在系统为进程分配资源时施加限制条件或进行检测 若系统为进程分配资源时不采取任何措施,则应该提供检测和解除死锁的手段 发现死锁的原理是考察某一时刻系统状态是否合理,即是否存在一组可以实现的系统状 态,能使所有进程都得到它们所申请的资源而运行结束。检测死锁算法的基本思想是: 获得某时刻t系统中各类可利用资源的数目向量w(t〉,对于系统中的一组进程P1 P2、…、pn},找出那些对各类资源请求数目均小于系统现在所拥有的各类资源数目的进程 我们可以认为这样的进程可以获得它们所需要的全部资源并运行结束,当它们运行结束后释 放所占有的全部资源,从而使可用资源数目增加,这样的进程加入到可运行结束的进程序列L 中,然后对剩下的进程再作上述考察。如果一组进程{P1、P2、…、Pn}中有几个进程不在序列的需求向量,由矩阵 Need 的第 i 行构成。 上述三个矩阵间存在关系: Need (i,j)=Max(i,j)-Allocation (i,j) 银行家算法如下: Requesti 是进程 Pi 的请求向量。Requesti(j)=k 表示进程 Pi 请求分配 Rj 类资源 k 个。 当 Pi 发出资源请求后,系统按下述步骤进行检查 z (1)如果 Requesti<=Need,则转向步骤(2);否则,认为出错,因为它所需要的资源数已超过 它所宣布的最大值。 (2)如果 Requesti<=Available,则转向步骤(3〉;否则,表示系统中尚无足够的资源满足 Pi 的申请,Pi 必须等待。 (3)系统试探把资源分配给进程 Pi,并修改下面数据结构中的数值: Available =Available-Requesti; Allocationi=Allocationi+Requesti; Needi=Needi-Requesti; (4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将 资源分配给进程 Pi,以完成本次分配:否则,将试探分配作废,恢复原来的资源分配状态,让进 程 Pi 等待。 系统所执行的安全性算法描述如下: (1)设置两个向量。 Work它表示系统可提供给进程继续运行的各类资源数目,它含有m个元素,开始执行安 全性算法时,Work =Availabh。 Finish 它表示系统是否有足够的资源分配给进程,使之运行完成,开始时, Finish (i)=false:当有足够资源分配给进程 Pi 时,令 Finish (i)=true. (2)从进程集合中找到一个能满足下述条件的进程。 Finish (i〉==false: Needi<=Work: 如找到则执行步骤(3〉:否则,执行步骤(4)。 (3)当进程 Pi 获得资源后,可顺利执行直到完成,并释放出分配给它的资源,故应执行 Work =work+Allocationi: Finish (i〉=true: Goto step2: (4)若所有进程的 Finish(i)都为 true,则表示系统处于安全状态:否则,系统处于不安全 状态。 5.死锁的检测和解除 (1)死锁的检测 前面介绍的死锁预防和避免算法都是在系统为进程分配资源时施加限制条件或进行检测, 若系统为进程分配资源时不采取任何措施,则应该提供检测和解除死锁的手段。 发现死锁的原理是考察某一时刻系统状态是否合理,即是否存在一组可以实现的系统状 态,能使所有进程都得到它们所申请的资源而运行结束。检测死锁算法的基本思想是: 获得某时刻 t 系统中各类可利用资源的数目向量 w(t〉,对于系统中的一组进程{Pl、 P2、…、pn},找出那些对各类资源请求数目均小于系统现在所拥有的各类资源数目的进程。 我们可以认为这样的进程可以获得它们所需要的全部资源并运行结束,当它们运行结束后释 放所占有的全部资源,从而使可用资源数目增加,这样的进程加入到可运行结束的进程序列 L 中,然后对剩下的进程再作上述考察。如果一组进程{P1、P2、…、Pn}中有几个进程不在序列
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有