以下内容是笔者整合网络资源以及个人理解所得:
银行家算法解题步骤:
先明确几个概念:Need[ ] = Max[ ] - Allocation[ ];
Available[ ] //当前系统可用的该种资源个数
//Need:宣布当前所需要的资源个数;Max:进程需要的最大资源;Allocation:已分配的资源个数。
Request[ ]:是进程所发出的请求向量个数。
①:while(Request[ ]>=Need[ ]) //请求的资源量和你声明的Need-----------------大小关系是否相符。(如果>则进程说谎,不予执行)
②:while(Request[ ]>=Available)//如果小于,则wait进入等待队列?
③:试探性修改数据结构:(模拟假设分配成功后)
Available=available[ ] - request[ ];
allocation= allocation[ ] + request[ ];
Need = Need[ ] - Request[ ];
④:执行安全性算法:
能够找一组安全的序列是指完成任务。具体步骤:
定义:Work[]=Allocation[];
boolean Finish[]=flase;
for(int i:总共的进程数){
while(Need[]<=Work[]){
Work[ ] = Work[ ]+Need[ ]
}
}
Finish[ ] = true;
//如果全部Finish[ ]=true执行成功
//系统判定可以分配