關於操作系統-銀行家算法的闡述:

以下內容是筆者整合網絡資源以及個人理解所得:

銀行家算法解題步驟:

先明確幾個概念: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執行成功


//系統判定可以分配




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章