*64.银行家算法
設計目的:
解決死鎖。而且是避免死鎖的重要算法之一。
總體思想:
參照了銀行家借貸系統的分配次略的思想,判斷并保證系統 安全運行
在每個客戶申請貸款的時候,必須要申明完成該項目的最大資金量。銀行再根據自己的資金進行評估,如果不超過自己的最大擁有時,則放貸。否則拒絕貸款。
要解釋銀行家算法,首先得先解釋操作系統的安全狀態和非安全狀態。
安全序列:是指序列中的每一個進程以后所需的資源量不超過當前系統剩余的資源量與所有進程當前占有量之和。
安全狀態:所有進程構成一個安全序列
不安全狀態:不存在一個安全序列
安全狀態一定沒有死鎖,不安全狀態不一定會有死鎖。
系統在分配資源時,會判斷系統是否處于安全狀態,是則分配。如果處于不安全狀態,則讓進程繼續等待。
操作系統根據銀行家的借貸系統的分配策略,對進程首次資源申請進行評估,測試進程所需的最大資源量,如果系統現存資源滿足,那么分配,如果不滿足,則讓進程等待。
如果進程在運行中申請,則測試進程申請的資源數是否超過一開始最大資源的剩余數。超過則拒絕分配。
總結
- 上一篇: 63.死锁和死锁的原因
- 下一篇: 索引存储和散列存储(哈希)的区别吧