(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版权协议,转载请附上原文出处链接和本声明。
