銀行家算法假定系統(tǒng)資源總量
1、銀行家算法:銀行家算法是從當(dāng)前狀態(tài)出發(fā),按照系統(tǒng)各類資源剩余量逐個(gè)檢查各進(jìn)程需要申請(qǐng)的資源量,找到一個(gè)各類資源申請(qǐng)量均小于等于系統(tǒng)剩余資源量的進(jìn)程P1。
2、為什么銀行家算法是可行的呢?這里需要嚴(yán)格的證明一下。不管任何時(shí)候,操作系統(tǒng)分配資源的時(shí)候都可以保證當(dāng)前接受資源的進(jìn)程不會(huì)陷入死鎖,因?yàn)椴僮飨到y(tǒng)總是可以滿足該進(jìn)程需要的資源的。
3、為實(shí)現(xiàn)銀行家算法,系統(tǒng)必須設(shè)置若干數(shù)據(jù)結(jié)構(gòu)。要解釋銀行家算法,必須先解釋操作系統(tǒng)安全狀態(tài)和不安全狀態(tài)。
4、銀行家算法問題是研究一個(gè)銀行家如何將其總數(shù)一定的現(xiàn)金安全地借給若干個(gè)顧客,使這些顧客既能滿足對(duì)資金的要求,又能完成其交易,也使銀行家可以收回自己的全部現(xiàn)金不致于破產(chǎn)。
有沒有人懂操作系統(tǒng)的銀行家算法,最好有一道例題可以講
1、銀行家算法是一種最有代表性的避免死鎖的算法。在避免死鎖方法中允許進(jìn)程動(dòng)態(tài)地申請(qǐng)資源,但系 銀行家算法統(tǒng)在進(jìn)行資源分配之前,應(yīng)先計(jì)算此次分配資源的安全性,若分配不會(huì)導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則分配,否則等待。
2、銀行家算法:資源==錢;收回資源==收回貸款;收不回資源==不會(huì)放貸;例題:假設(shè)系統(tǒng)中有三類互斥資源R1,R2,R3。
3、②采用銀行家算法進(jìn)行計(jì)算分析可知:系統(tǒng)可以滿足P2進(jìn)程對(duì)資源的請(qǐng)求,將資源分配給P2之后,至少可以找到一個(gè)安全的執(zhí)行序列,如(P2, P1, P3, P4)使各進(jìn)程正常運(yùn)行終結(jié)。
在銀行家算法中,若出現(xiàn)下述資源分配狀況
)不能.如果滿足P1的請(qǐng)求Request(1,0,2)后,P1的需求沒有完全滿足,也就是說P1獲得該資源后不會(huì)結(jié)束,依然在等待系統(tǒng)分配資源。而系統(tǒng)剩余資源為(2,3,0)不能再滿足任何進(jìn)程的需求,處在不安全狀態(tài),可能產(chǎn)生死鎖。
接下來是P2,結(jié)束后可用資源為(7,5,3)+(3,0,2)=(10,5,5)最后分配P4,結(jié)束后可用資源為(10,5,5)+(0,0,2)=(10,5,7)這樣得到一個(gè)安全序列:P1-P3-P0-P2-P4,所以T0狀態(tài)是安全的。
P1進(jìn)程提出的請(qǐng)求,可以分配。P2進(jìn)程不能分配,因?yàn)檎?qǐng)求的B類資源超過了它的最大值。
銀行家算法是一種預(yù)防死鎖的算法。具體算法步驟可以參考百度百科: 銀行家算法 例子 :某系統(tǒng)有A、B、C、D , 4類資源共5個(gè)進(jìn)程(P0、PPPP4)共享,各進(jìn)程對(duì)資源的需求和分配情況如下表所示。
6 5 2 P5 0 0 1 4 0 6 5 6 按照各進(jìn)程狀態(tài)以及剩余資源,可以知道之后P3,即可回收已分配的資源,即處安全狀態(tài)。這是本人的理解,如有錯(cuò),請(qǐng)包涵指出。