操作系统银行家算法 不会分配,看一下银行家算法的流程。可以看到 在step(1)若Request,goto step(2);否则错误返回.原因如下,每个进程开始之前,都必须声明自己需要的各类资源的最大值Max。Need 需求资源=Max 最大需求-Allocation 已分配资源进程运行过程中,不能再要比Need还多的资源。参考书 操作系统概念(OS concepts Six Edition)算法:n:系统中进程的总数m:资源类总数符号说明:Available 可用剩余资源Max 最大需求Allocation 已分配资源Need 需求资源Request 请求资源当进程pi提出资源申请时,系统执行下列步骤:(\"=\"为赋值符号,\"=\"为等号)step(1)若Request,goto step(2);否则错误返回step(2)若Request,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;如果不存在,goto step(4)step(3)Work。
操作系统-银行家算法问题 1)剩余:A:1 B:5 C:2 D:0因为P1已经满足最大需求数,则P1资源最终是可回收,则可看做剩余:A:1 B:5 C3 D:22)是安全状态;因为按照剩余:A:1 B:5 C3 D:2(此时P1已经结束)分别按照顺序满足各进程的最大需求是可以把全部进程完成的(顺序可为:P3->;P4->;P5->;p2)3)系统会去满足;若此时去满足,则剩余资源为:A:1 B:1 C1 D:2此时,各进程的状态:已占有资源 最大需求数A B C D A B C DP1 0 0 0 0 0 0 1 2(已结束)P2 1 4 2 0 1 7 5 0P3 1 3 5 4 2 3 5 6P4 0 6 3 2 0 6 5 2P5 0 0 1 4 0 6 5 6按照各进程状态以及剩余资源,可以知道之后P3,即可回收已分配的资源,即处安全状态。这是本人的理解,如有错,请包涵指出。
操作系统 银行家算法 这个 你要明确两个概念Need 需求资源Request 请求资源需求是指最大要多少资源 请求是一次需要多少资源我举个例子 某程序最大需要3个寄存器 做加法运算开始只要两个 存加数a和被加数b 而且a和b不能被改变但是这个计算 无比复杂 需要一个小时计算完了 才需要第三个存结果c那么他的need是3 第一次request是2 第二次request是1为什么第一次request不直接是3呢他要第三个寄存器 一个小时不用浪费啊 留给别人用啊希望你懂了