死鎖與安全狀態(tài)的關(guān)系是
1、這個可能是系統(tǒng)在給任務(wù)分配資源的時候會先判斷系統(tǒng)剩余資源數(shù)量是否大于等于任務(wù)執(zhí)行尚需資源數(shù)量。如果滿足則分配資源,執(zhí)行該任務(wù),如果不滿足,則等待,選擇其他任務(wù)執(zhí)行。
2、安全狀態(tài):是指系統(tǒng)能按照某種進(jìn)程順序(P1,P2,…Pn),來為每一個進(jìn)程Pi分配其所需要的資源,直到滿足每個進(jìn)程對資源的最大需求,使每個進(jìn)程都可順利地完成。如果系統(tǒng)無法找到這樣一個安全序列,則稱系統(tǒng)處于不安全狀態(tài)。
3、≤i≤n),它以后尚需要的資源量不超過系統(tǒng)當(dāng)前剩余資源量與所有進(jìn)程Pj (j i )當(dāng)前占有資源量之和。如果存在一個由系統(tǒng)中所有進(jìn)程構(gòu)成的安全序列P1,…,Pn,則系統(tǒng)處于安全狀態(tài)。安全狀態(tài)一定是沒有死鎖發(fā)生。
4、如果系統(tǒng)處于 安全狀態(tài) ,就 一定不會發(fā)生死鎖 。如果系統(tǒng)進(jìn)入了不安全狀態(tài)未必一定發(fā)生死鎖,但是發(fā)生了死鎖一定是在不安全狀態(tài)。
5、不清楚你使用的是什么系統(tǒng),而且也不清楚是何種“不安全狀態(tài)”,我按照自己的一些經(jīng)驗來說一下,希望能對你有所幫助。
6、死鎖的防止是系統(tǒng)預(yù)先確定一些資源分配策略,進(jìn)程按規(guī)定申請資源,系統(tǒng)按預(yù)先規(guī)定的策略進(jìn)行分配從而防止死鎖的發(fā)生。
用銀行家算法判斷下述每個狀態(tài)是否安全
用銀行家算法判斷下述每個狀態(tài)是否安全。如果安全,說明所有進(jìn)程是如何能夠運(yùn)行完畢的。如果不安全,說明為什么可能出現(xiàn)死鎖。
從上述分析中可以看出,此時存在一個安全序列{P0,P3,P4,P1,P2},故該狀態(tài)是安全的。
根據(jù)銀行家算法(試探性分配之后驗證系統(tǒng)所處的狀態(tài)是否安全):進(jìn)程p1申請資源(2,2,1)時,如果分配,那剩余資源為(2,0,1),此時有沒有被死鎖的進(jìn)程(如p2),系統(tǒng)是安全的,所以能滿足。
為什么銀行家算法避免死鎖的發(fā)生
作為避免死鎖的一種算法,銀行家算法可以說是最為出名的了。這個名字的來源是因為該算法起初是為銀行系統(tǒng)設(shè)計的,以確保銀行在發(fā)放現(xiàn)金貸款時,不會發(fā)生不能滿足所有客戶需要的情況。在操作系統(tǒng)中也可以用它來實現(xiàn)避免死鎖。
死鎖的預(yù)防是通過破壞產(chǎn)生條件來阻止死鎖的產(chǎn)生避免死鎖采用的是允許前三個條件存在,但通過合理的資源分配算法來確保永遠(yuǎn)不會形成環(huán)形等待的封閉進(jìn)程鏈,從而避免死鎖。
銀行家算法是一種最有代表性的避免死鎖的算法。要解釋銀行家算法,必須先解釋操作系統(tǒng)安全狀態(tài)和不安全狀態(tài)。