銀行家算法是如何實(shí)現(xiàn)的?
銀行家算法是死鎖避免的經(jīng)典算法,其核心思想是:進(jìn)程動(dòng)態(tài)地申請(qǐng)資源,每次申請(qǐng)資源時(shí)系統(tǒng)都執(zhí)行安全狀態(tài)檢查算法判斷本次申請(qǐng)是否會(huì)造成系統(tǒng)處于不安全狀態(tài),如果不安全則阻塞進(jìn)程;如果安全狀態(tài),則完成資源分配。
設(shè)進(jìn)程cusneed提出請(qǐng)求REQUEST [i],則銀行家算法按如下規(guī)則進(jìn)行判斷。(1)如果REQUEST [cusneed] [i]= NEED[cusneed][i],則轉(zhuǎn)(2);否則,出錯(cuò)。
銀行家算法中的數(shù)據(jù)結(jié)構(gòu)。為了實(shí)現(xiàn)銀行家算法,在系統(tǒng)中必須設(shè)置這樣四個(gè)數(shù)據(jù)結(jié)構(gòu),分別用來(lái)描述系統(tǒng)中可利用的資源,所有進(jìn)程對(duì)資源的最大需求,系統(tǒng)中的資源分配以及所有進(jìn)程還需要多少資源的情況。(1)可利用資源向量Available。
銀行家算法問(wèn)題是研究一個(gè)銀行家如何將其總數(shù)一定的現(xiàn)金安全地借給若干個(gè)顧客,使這些顧客既能滿足對(duì)資金的要求,又能完成其交易,也使銀行家可以收回自己的全部現(xiàn)金不致于破產(chǎn)。
操作系統(tǒng)銀行家算法
在銀行家算法中,操作系統(tǒng)通過(guò)分析進(jìn)程當(dāng)前的資源占用情況,預(yù)測(cè)其未來(lái)的資源需求情況,決定是否分配資源給該進(jìn)程,從而避免了資源浪費(fèi)和爭(zhēng)奪的情況,提高了資源的利用率,銀行家算法可以有效地提高資源利用率,減少資源浪費(fèi)。
銀行家算法是死鎖避免的重要算法。銀行家算法:資源==錢(qián);收回資源==收回貸款;收不回資源==不會(huì)放貸;例題:假設(shè)系統(tǒng)中有三類(lèi)互斥資源R1,R2,R3。
銀行家算法是一種最有代表性的避免死鎖的算法。在避免死鎖方法中允許進(jìn)程動(dòng)態(tài)地申請(qǐng)資源,但系銀行家算法統(tǒng)在進(jìn)行資源分配之前,應(yīng)先計(jì)算此次分配資源的安全性,若分配不會(huì)導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則分配,否則等待。
銀行家算法中的數(shù)據(jù)結(jié)構(gòu)。為了實(shí)現(xiàn)銀行家算法,在系統(tǒng)中必須設(shè)置這樣四個(gè)數(shù)據(jù)結(jié)構(gòu),分別用來(lái)描述系統(tǒng)中可利用的資源,所有進(jìn)程對(duì)資源的最大需求,系統(tǒng)中的資源分配以及所有進(jìn)程還需要多少資源的情況。
. 銀行家算法 設(shè)Requesti是進(jìn)程Pi的請(qǐng)求向量,如果Requesti[j]=K,表示進(jìn)程Pi需要K個(gè)Rj類(lèi)型的資源。
對(duì)資源編號(hào),要求進(jìn)程按照序號(hào)順序申請(qǐng)資源,是破壞了死鎖必要條件中的哪...
1、這樣就保證了進(jìn)程不會(huì)出現(xiàn)循環(huán)等待資源的狀態(tài),破壞了死鎖四個(gè)必要條件中的“循環(huán)等待資源”的條件,從而可防止死鎖?!敬鸢附馕觥?參見(jiàn)教材P136。
2、(1)因?yàn)橄到y(tǒng)資源不足。(2)進(jìn)程運(yùn)行推進(jìn)的順序不合適。(3)資源分配不當(dāng)?shù)取?/p>
3、產(chǎn)生死鎖的原因:(1)競(jìng)爭(zhēng)系統(tǒng)資源 (2)進(jìn)程的推進(jìn)順序不當(dāng) 產(chǎn)生死鎖的必要條件:互斥條件:進(jìn)程要求對(duì)所分配的資源進(jìn)行排它性控制,即在一段時(shí)間內(nèi)某資源僅為一進(jìn)程所占用。
4、(4) 循環(huán)等待條件。 存在一種進(jìn)程資源的循環(huán)等待鏈,鏈中的每一個(gè)進(jìn)程已經(jīng)獲得的資源同時(shí)被下一個(gè)進(jìn)程所請(qǐng)求。 (1) 對(duì)系統(tǒng)資源的爭(zhēng)搶。各進(jìn)程對(duì)不可剝奪資源的競(jìng)爭(zhēng)可能會(huì)引起死鎖。 (2) 進(jìn)程推進(jìn)順序非法。
5、順序分配:順序分配是一種策略,它要求進(jìn)程按照一定的順序請(qǐng)求資源。如果所有的進(jìn)程都遵循相同的順序來(lái)請(qǐng)求資源,那么就可以避免發(fā)生死鎖。
該系統(tǒng)是否安全?如果進(jìn)程p2此時(shí)提出資源申請(qǐng),系統(tǒng)能否將資源分配...
1、進(jìn)程p1申請(qǐng)資源(2,2,1)時(shí),如果分配,那剩余資源為(2,0,1),此時(shí)有沒(méi)有被死鎖的進(jìn)程(如p2),系統(tǒng)是安全的,所以能滿足。
2、所謂系統(tǒng)是否安全,看是否能夠找到一個(gè)安全序列。若能,則是安全狀態(tài)。這道題中安全序列很多。如{p1,p2,p3,p4,p0}等等。至于第二問(wèn)嘛,你這里明明只有一種資源,怎么提出三種資源申請(qǐng)?。一定是LZ信息沒(méi)給全啊。
3、從上述分析中可以看出,此時(shí)存在一個(gè)安全序列{P0,P3,P4,P1,P2},故該狀態(tài)是安全的。
4、再利用安全性算法檢查系統(tǒng)是否安全,可用資源Available(1,1,1)已不能滿足任何進(jìn)程,故系統(tǒng)進(jìn)入不安全狀態(tài),此時(shí)系統(tǒng)不能將資源分配給P1。
5、)P2提出 Request(1 2 0 0) Avaliable( 1 5 1 2),可以將資源分配給它。補(bǔ)充:分配后可用資源變?yōu)?(1 5 1 2)- (1 2 0 0) = (0 3 1 2),按照上題的分析方法步驟,狀態(tài)就不安全了。
6、系統(tǒng)不可以將資源分配給進(jìn)程P1,雖然可利用資源還可以滿足進(jìn)程P1現(xiàn)在的需求,但是一旦分配給進(jìn)程P1后,就找不到一個(gè)安全執(zhí)行的序列保證各進(jìn)程能夠正常運(yùn)行終結(jié)。所以進(jìn)程P1應(yīng)該進(jìn)入阻塞狀態(tài)。
什么是銀行家算法
1、銀行家算法是最有代表性的避免死鎖算法,是Dijkstra提出的銀行家算法。這是由于該算法能用于銀行系統(tǒng)現(xiàn)金貸款的發(fā)放而得名。
2、銀行家算法問(wèn)題是研究一個(gè)銀行家如何將其總數(shù)一定的現(xiàn)金安全地借給若干個(gè)顧客,使這些顧客既能滿足對(duì)資金的要求,又能完成其交易,也使銀行家可以收回自己的全部現(xiàn)金不致于破產(chǎn)。
3、銀行家算法是由艾茲格·迪杰斯特拉在1965年為T(mén).H.E系統(tǒng)設(shè)計(jì)的一種避免死鎖產(chǎn)生的算法。
4、銀行家算法是從當(dāng)前狀態(tài)出發(fā),逐個(gè)按安全序列檢查各客戶中誰(shuí)能完成其工作,然后假定其完成工作且歸還全部貸款,再進(jìn)而檢查下一個(gè)能完成工作的客戶。如果所有客戶都能完成工作,則找到一個(gè)安全序列,銀行家才是安全的。