操作系统银行家算法
如果进程P1发出request1(1,2,2,2),而request1(1,2,2,2)>Need(1,7,5,0)的话,系统会分配资源给P1吗?...
如果进程P1发出request1(1,2,2,2),而request1(1,2,2,2)>Need(1,7,5,0)的话,系统会分配资源给P1吗?
展开
4个回答
展开全部
不会分配,看一下银行家算法的流程。
可以看到 在step(1)若Request<=Need, goto step(2);否则错误返回.
原因如下,每个进程开始之前,都必须声明自己需要的各类资源的最大值Max。
Need 需求资源 = Max 最大需求 - Allocation 已分配资源
进程运行过程中,不能再要比Need还多的资源。
参考书 操作系统概念(OS concepts Six Edition)
算法:
n:系统中进程的总数
m:资源类总数
符号说明:
Available 可用剩余资源
Max 最大需求
Allocation 已分配资源
Need 需求资源
Request 请求资源
当进程pi提出资源申请时, 系统执行下列
步骤:("="为赋值符号, "=="为等号)
step(1)若Request<=Need, goto step(2);否则错误返回
step(2)若Request<=Available, goto step(3);否则进程等待
step(3)假设系统分配了资源, 则有:
Available=Available-Request;
Allocation=Allocation+Request;
Need=Need-Request
若系统新状态是安全的, 则分配完成
若系统新状态是不安全的, 则恢复原状态, 进程等待
为进行安全性检查, 定义数据结构:
Work:ARRAY[1...m] of integer;
Finish:ARRAY[1...n] of Boolean;
安全性检查的步骤:
step (1):
Work=Available;
Finish=false;
step (2) 寻找满足条件的i:
a. Finish==false;
b. Need<=Work;
如果不存在, goto step(4)
step(3)
Work=Work+Allocation;
Finish=true;
goto step(2)
step (4) 若对所有i, Finish=true, 则系统处于安全状态, 否则处于不安全状态
可以看到 在step(1)若Request<=Need, goto step(2);否则错误返回.
原因如下,每个进程开始之前,都必须声明自己需要的各类资源的最大值Max。
Need 需求资源 = Max 最大需求 - Allocation 已分配资源
进程运行过程中,不能再要比Need还多的资源。
参考书 操作系统概念(OS concepts Six Edition)
算法:
n:系统中进程的总数
m:资源类总数
符号说明:
Available 可用剩余资源
Max 最大需求
Allocation 已分配资源
Need 需求资源
Request 请求资源
当进程pi提出资源申请时, 系统执行下列
步骤:("="为赋值符号, "=="为等号)
step(1)若Request<=Need, goto step(2);否则错误返回
step(2)若Request<=Available, goto step(3);否则进程等待
step(3)假设系统分配了资源, 则有:
Available=Available-Request;
Allocation=Allocation+Request;
Need=Need-Request
若系统新状态是安全的, 则分配完成
若系统新状态是不安全的, 则恢复原状态, 进程等待
为进行安全性检查, 定义数据结构:
Work:ARRAY[1...m] of integer;
Finish:ARRAY[1...n] of Boolean;
安全性检查的步骤:
step (1):
Work=Available;
Finish=false;
step (2) 寻找满足条件的i:
a. Finish==false;
b. Need<=Work;
如果不存在, goto step(4)
step(3)
Work=Work+Allocation;
Finish=true;
goto step(2)
step (4) 若对所有i, Finish=true, 则系统处于安全状态, 否则处于不安全状态
展开全部
这个
你要明确两个概念
Need
需求资源
Request
请求资源
需求是指最大要多少资源
请求是一次需要多少资源
我举个例子
某程序最大需要3个寄存器
做加法运算
开始只要两个
存加数a和被加数b
而且a和b不能被改变
但是这个计算
无比复杂
需要一个小时
计算完了
才需要第三个存结果c
那么他的need是3
第一次request是2
第二次request是1
为什么第一次request不直接是3呢
他要第三个寄存器
一个小时不用浪费啊
留给别人用啊
希望你懂了
你要明确两个概念
Need
需求资源
Request
请求资源
需求是指最大要多少资源
请求是一次需要多少资源
我举个例子
某程序最大需要3个寄存器
做加法运算
开始只要两个
存加数a和被加数b
而且a和b不能被改变
但是这个计算
无比复杂
需要一个小时
计算完了
才需要第三个存结果c
那么他的need是3
第一次request是2
第二次request是1
为什么第一次request不直接是3呢
他要第三个寄存器
一个小时不用浪费啊
留给别人用啊
希望你懂了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-04-25
展开全部
request必须小于need才能分配资源!故上述不能分配
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不会
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询