以下內容是筆者整合網絡資源以及個人理解所得:
銀行家算法解題步驟:
先明確幾個概念: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執行成功
//系統判定可以分配