首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
根据银行家算法,填写三个时刻的进行占有和阻塞情况
[问答题]
采用银行家算法防止死锁,用Pi→n表示Pi 进程申请n个资源,用Pi←n表示Pi 进程占有n个资源。如果占有n个资源的进程被阻塞,可以用Pi*←n 来表示,假设系统中有某类资源10个,进程P1, P2, P3各自的最大需求量为3,7,10个,各进程T0时刻开始运行: T1时刻发生: P1→2, P2→3, P3→3 T2时刻发生: P2→1, P3→2 T3时刻发生: P1→1, P2→1 根据银行家算法,填写三个时刻的进行占有和阻塞情况.
添加笔记
求解答(0)
邀请回答
收藏(28)
分享
纠错
2个回答
添加回答
2
GreyMax
补充一下银行家算法的概念
避免死锁:银行家算法
在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。该方法将系统的状态分为安全和不安全,只要系统处于安全状态,便可避免 死锁 的发生。
算法原理:在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。
所以有几个关键的数据结构:每个进程当前需要的资源NEED[i][j] 每个进程最多需要的资源MAX[i][j] 每个进程当前已分配到的资源ALLOCATION[i][j] 当前可用的资源AVAILABLE[i][j]
算法假设:每个进程都可以得到他想要的资源,并且得到资源后执行,执行后释放所用的资源
算法伪代码:
P - 进程的集合
Mp - 进程p的最大的请求数目
Cp - 进程p当前被分配的资源
A - 当前可用的资源
while(P!=NULL)
{
found=FALSE;
for each P{
if(Mp-Cp<=A)
{
A=A+Cp;
P=P-{p};
found=TRUE
}
}
if(!found)
return FAIL;
}
注意:银行家算法中的安全序列不唯一,进程获得资源的顺序可以不同。比起其他解决死锁的方法,该算法需要较多的数据结构,实现起来比较困难,但是资源利用率最高。
发表于 2016-03-29 15:06:22
回复(0)
1
小小
进程 T0 T1 T2 T3
P1 P1←0 P1←2 P1←2 P1←3
P2 P2←0 P2←3 P2←4 P2*←4
P3 P3←0 P3←3 P3*←3 P3*←3
发表于 2015-05-19 17:56:51
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
操作系统
上传者:
小小
难度:
2条回答
28收藏
5354浏览
热门推荐
相关试题
有两个N*N的矩阵A和B,想要在P...
阿里巴巴
操作系统
评论
(38)
来自
中国电信2025春招笔试...
请编写实现malloc()内存分配...
微软
C++
操作系统
评论
(3)
下面关于 Spring Cloud...
Spring
评论
(1)
下面代码的输出结果 public ...
Java
评论
(1)
子曰:“名不正,则言不顺;言不顺,...
判断推理
评论
(0)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题