网络工程师——进程管理——银行家算法

银行家算法:分配资源的原则

一、当一个进程对资源的最大需求量不超过系统中的资源数是,可以接纳该进程。

二、进程可以分期请求资源,但请求的总数不能操过最大需求量。

三、当系统现有资源不能满足进程尚需要资源时,对进程的请求可以推迟分配,但总能时进程在有限的时间里得到资源。


银行家算法例子

假如系统中有三类互斥资源R1,R2,R3,可用资源数分别为9,8,5,在T0时刻系统中有P1,P2,P3,P4,P5五个进程,这些进程对资源的最大需求量和已分配资源数如下所示,如果进程按序列执行,那么怎么样系统状态最安全的。

1.png

A:P1→P2→P4→P5→P3

B:P2→P4→P5→P1→P3

C:P2→P1→P4→P5→P3

D:P4→P2→P5→P1→P3

解析

把已经分配的R1子自用数相加,可以得知R1目前已经分配了7个资源,同理可以得知R2目前已经分配了7个资源,R3分配了5个资源,然后通过题目可以得知R1一共有9个资源,用9-7可以得知还剩余2个资源,同理可以得知R2还剩余1个资源,R3剩余0个资源。

可以通过表得知P1需要的R1资源最大为六个,但是现在只有1个,而R1目前只剩余2个,就算把剩下的2个全部分配给P1那么也不够,指挥造成环路等待从而造成死锁,所以不能先给P1,因此排除答案A;

P2需要的R1最大资源数为2个,目前已经分配到2个,P2需要的R1的资源满足了,然后接着看需要的R2,需要的R2资源数为2个,目前分配到了1个,R2资源还剩余2个,可以给它分配一个,,这样P2所需的R2资源满足,需要R3资源1个,目前已经分配到了1个,已经满足,所以先执行P2,因此可以确定答案范围在B和C之间;

P2执行完成后,进行资源释放,它释放了2个R1,2个R2,1个R3,在最开始的时候,R1剩余2个,R2剩余1个,R3剩余0个,后面给P2分配了之后R1剩余2个,R2剩余0个,R3剩余0个,最后执行完成后进行资源释放,释放了2个R1,2个R2,1个R3,那么就用分配后剩余的资源加释放后剩余的资源即可得出当前的资源,R1=2+2=4,R2=0+2=2,R3=0+1=1,现在可以得出,当P2执行完成后所剩的资源,R1有4个,R2有2个,R3有1个,在用剩余的资源从新分配给进程。已经知道答案在B和C之间,那么只用先按照这两个答案来分配即可得出正确答案。

先尝试分配给B答案,P2完成后是P4,P4需要R1资源一个,目前已经拿到1个,条件满足,看看它需要的R2,它需要R2资源数为2个,目前分配到2个,条件满足,在看它需要的R3资源,它需要的R3资源为1个,目前分配到0个,还差一个,目前我们剩余的资源R3还有1个,刚好满足,所以执行完P2之后可以先执行P4。

在尝试分配给C打开,C答案是P2执行完成后执行P1,P1需要的R1资源数为6个,目前分配的1个,但是R1只剩余4个,不够分配,直接排除,所以可以得出正确答案为B。

分配资源原理

分配资源时,先看一下资源分配给它后是否满足进程的执行条件,满足可以分配,不满足不能分配。


二维码

发表评论