银行家算法例题求解过程

这篇博客探讨了资源分配的安全性问题,通过一个具体的例子展示了如何判断系统是否能为进程分配资源。在给定的状态下,由于无法找到安全序列,因此不能将资源分配给请求Request(1,2,2,2)的进程P2。内容涉及资源分配的算法,包括需要、可用资源、最大资源等概念,并阐述了在资源请求时的安全性检查流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

(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

试分配如表

 

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

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值