銀行家算法的安全序列怎么尋找
設(shè)進(jìn)程cusneed提出請(qǐng)求REQUEST [i],則銀行家算法按如下規(guī)則進(jìn)行判斷。(1)如果REQUEST [cusneed] [i]= NEED[cusneed][i],則轉(zhuǎn)(2);否則,出錯(cuò)。
同樣的p0執(zhí)行完以后,釋放出他的已有資源后,可用資源變成4132,同理依次可選擇p4 p2 p1。
即:找一個(gè)安全序列,使這些進(jìn)程按順序執(zhí)行完)如果能夠找到,則將假設(shè)操作真正實(shí)施完成資源分配。
該系統(tǒng)是否安全?如果進(jìn)程p2此時(shí)提出資源申請(qǐng),系統(tǒng)能否將資源分配給它...
)不能.如果滿足P1的請(qǐng)求Request(1,0,2)后,P1的需求沒有完全滿足,也就是說P1獲得該資源后不會(huì)結(jié)束,依然在等待系統(tǒng)分配資源。
3 20 6 5 2 P40 0 1 40 6 5 6 ·再利用安全性算法檢查系統(tǒng)是否安全,可用系統(tǒng)資源Available(0,4,0,0)已不能滿足任何進(jìn)程的需要,故系統(tǒng)進(jìn)入不安全狀態(tài),此時(shí)系統(tǒng)不能將資源分配給P2。
系統(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)。
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)就不安全了。
再利用安全性算法檢查系統(tǒng)是否安全,可用資源Available(1,1,1)已不能滿足任何進(jìn)程,故系統(tǒng)進(jìn)入不安全狀態(tài),此時(shí)系統(tǒng)不能將資源分配給P1。
銀行家算法
1、銀行家算法(Bankers Algorithm)是一個(gè)避免死鎖(Deadlock)的著名算法,是由艾茲格·迪杰斯特拉在1965年為T.H.E系統(tǒng)設(shè)計(jì)的一種避免死鎖產(chǎn)生的算法。它以銀行借貸系統(tǒng)的分配策略為基礎(chǔ),判斷并保證系統(tǒng)的安全運(yùn)行。
2、作為避免死鎖的一種算法,銀行家算法可以說是最為出名的了。這個(gè)名字的來源是因?yàn)樵撍惴ㄆ鸪跏菫殂y行系統(tǒng)設(shè)計(jì)的,以確保銀行在發(fā)放現(xiàn)金貸款時(shí),不會(huì)發(fā)生不能滿足所有客戶需要的情況。在操作系統(tǒng)中也可以用它來實(shí)現(xiàn)避免死鎖。
3、銀行家算法是一種預(yù)防死鎖的算法。具體算法步驟可以參考百度百科: 銀行家算法 例子 :某系統(tǒng)有A、B、C、D , 4類資源共5個(gè)進(jìn)程(P0、PPPP4)共享,各進(jìn)程對(duì)資源的需求和分配情況如下表所示。
4、銀行家算法是一種最有代表性的避免死鎖的算法。在避免死鎖方法中允許進(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í)現(xiàn)
銀行家算法是從當(dāng)前狀態(tài)出發(fā),逐個(gè)按安全序列檢查各客戶中誰能完成其工作,然后假定其完成工作且歸還全部貸款,再進(jìn)而檢查下一個(gè)能完成工作的客戶。如果所有客戶都能完成工作,則找到一個(gè)安全序列,銀行家才是安全的。
v取值:根據(jù)進(jìn)程需求賦初始值。v實(shí)現(xiàn):二維數(shù)組。Max【i,j】=K,表示進(jìn)程 i 需要Rj類資源的最大數(shù)目為K。算法過程:就是對(duì)各進(jìn)程的Request向量及資源數(shù)量進(jìn)行一系列判斷及值操作。
銀行家算法問題是研究一個(gè)銀行家如何將其總數(shù)一定的現(xiàn)金安全地借給若干個(gè)顧客,使這些顧客既能滿足對(duì)資金的要求,又能完成其交易,也使銀行家可以收回自己的全部現(xiàn)金不致于破產(chǎn)。
銀行家算法是一種預(yù)防死鎖的算法。具體算法步驟可以參考百度百科: 銀行家算法 例子 :某系統(tǒng)有A、B、C、D , 4類資源共5個(gè)進(jìn)程(P0、PPPP4)共享,各進(jìn)程對(duì)資源的需求和分配情況如下表所示。
銀行家算法中的數(shù)據(jù)結(jié)構(gòu)。為了實(shí)現(xiàn)銀行家算法,在系統(tǒng)中必須設(shè)置這樣四個(gè)數(shù)據(jù)結(jié)構(gòu),分別用來描述系統(tǒng)中可利用的資源,所有進(jìn)程對(duì)資源的最大需求,系統(tǒng)中的資源分配以及所有進(jìn)程還需要多少資源的情況。
銀行家算法是一種最有代表性的避免死鎖的算法。在避免死鎖方法中允許進(jìn)程動(dòng)態(tài)地申請(qǐng)資源,但系統(tǒng)在進(jìn)行資源分配之前,應(yīng)先計(jì)算此次分配資源的安全性,若分配不會(huì)導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則分配,否則等待。