64 銀行家演算法

2021-10-05 17:55:36 字數 608 閱讀 9634

設計目的:

解決死鎖。而且是避免死鎖的重要演算法之一。

總體思想:

參照了銀行家借貸系統的分配次略的思想,判斷並保證系統 安全執行

在每個客戶申請貸款的時候,必須要申明完成該項目的最大資金量。銀行再根據自己的資金進行評估,如果不超過自己的最大擁有時,則放貸。否則拒絕貸款。

要解釋銀行家演算法,首先得先解釋作業系統的安全狀態和非安全狀態。

安全序列:是指序列中的每乙個程序以後所需的資源量不超過當前系統剩餘的資源量與所有程序當前占有量之和。

安全狀態:所有程序構成乙個安全序列

不安全狀態:不存在乙個安全序列

安全狀態一定沒有死鎖,不安全狀態不一定會有死鎖。

系統在分配資源時,會判斷系統是否處於安全狀態,是則分配。如果處於不安全狀態,則讓程序繼續等待。

作業系統根據銀行家的借貸系統的分配策略,對程序首次資源申請進行評估,測試程序所需的最大資源量,如果系統現存資源滿足,那麼分配,如果不滿足,則讓程序等待。

如果程序在執行中申請,則測試程序申請的資源數是否超過一開始最大資源的剩餘數。超過則拒絕分配。

銀行家演算法

我們可以把作業系統看作是銀行家,作業系統管理的資源相當於銀行家管理的資金,程序向作業系統請求分配資源相當於使用者向銀行家貸款。為保證資金的安全,銀行家規定 1 當乙個顧客對資金的最大需求量不超過銀行家現有的資金時就可接納該顧客 2 顧客可以分期貸款,但貸款的總數不能超過最大需求量 3 當銀行家現有的...

銀行家演算法

銀行家演算法 banker s algorithm 是乙個避免死鎖 deadlock 的著名演算法,是由艾茲格 迪傑斯特拉在1965年為t.h.e系統設計的一種避免死鎖產生的演算法。它以銀行借貸系統的分配策略為基礎,判斷並保證系統的安全執行。就像我們從銀行貸快一樣,首先銀行會考慮到我們有沒有償還能力...

銀行家演算法

死鎖是作業系統層面的乙個錯誤,是程序死鎖的簡稱,最早在 1965 年由 dijkstra 在研究銀行家演算法時提出的,它是計算機作業系統乃至整個併發程式設計領域最難處理的問題之一。事實上,計算機世界有很多事情需要多執行緒方式去解決,因為這樣才能最大程度上利用資源,才能體現出計算的高效。但是,實際上來...