银行家算法例题求解过程

 

(1)该状态是否安全?安全给出安全序列,不安全给出理由。

解题方法

首先明白各个变量的含义

Allocation 表示已经分配的资源

Need表示还需要的资源

Available表示可分配的资源

max表示目前总资源 max= Allocation +Available

步骤

1)根据need的大小排序,当某一个可以,其上下都可以时,选择下一个

2)每次将avalible与allocation相加求得max比较它与下一个need的大小,如果大则继续进行,否则,不安全

 

(2)若进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它?(要说明理由)

当有请求时,首先要做的是

if(request<=need)
{
    test();
}
else
{
    throw Exception
}
void test()
{
    if(requset<=available)
    {
        //重点
        avalilable=avaliable-request;
        allocation+=request;
        need-=request;
    }
    else
    {
        throw Exception;
    }
}

所以先比较request<p2.need

所以available=available-request=0 4 0 0

p2.need=1 1 3 4

p2.allocation =2 5 7 6

试分配如表

 

无法找到安全序列,故不能分配。


版权声明:本文为xiaoyao_zhy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。