【正文】
, ? 在安全狀態(tài)下系統(tǒng)收到進(jìn)程的資源請(qǐng)求后 ,先把資源試探性分配給它。此時(shí) , 系統(tǒng)能滿足進(jìn)程 P0的資源請(qǐng)求 (0,2,0)。 實(shí)例說(shuō)明系統(tǒng)所處的安全或不安全狀態(tài) (5) cu rr en t av i l C ki A ki al l oc at i on cu rr en t av i l + al l oc at i on 資源 進(jìn)程 A B C A B C A B C A B C po ssi ble P 1 3 3 2 1 2 2 2 0 0 5 3 2 T R U E P 3 5 3 2 0 1 1 2 1 1 7 4 3 T R U E P 4 7 4 3 4 3 1 0 0 2 7 4 5 T R U E P 2 7 4 5 6 0 0 3 0 2 10 4 7 T R U E P 0 10 4 7 7 4 3 0 1 0 10 5 7 T R U E 實(shí)例說(shuō)明系統(tǒng)所處的安全或不安全狀態(tài) (6) 進(jìn)程 P1申請(qǐng)資源 request1=(1,0,2) ,檢查request1≤Available 、 比較 (1,0,2) ≤( 3,3,2),結(jié)果滿足條件 ,試分配 ,得到新?tīng)顟B(tài): al l ocat i on C ki A ki av ai l abl e p r o c e s s A B C A B C A B C P 0 0 1 0 7 4 3 2 3 0 P 1 3 0 2 0 2 0 P 2 3 0 2 6 0 0 P 3 2 1 1 0 1 1 P 4 0 0 2 4 3 1 實(shí)例說(shuō)明系統(tǒng)所處的安全或不安全狀態(tài) (7) ?判定新?tīng)顟B(tài)是否安全 ?可執(zhí)行安全性測(cè)試算法,找到一個(gè)進(jìn)程序列{P1,P3,P4,P0,P2}能滿足安全性條件 ,可正式把資源分配給進(jìn)程 P1。 ?A類(lèi)資源共有 10個(gè) ,B類(lèi)資源共有5個(gè) ,C類(lèi)資源共有 7個(gè) 。i=1,… ,m。 進(jìn)程啟動(dòng)拒絕法 系統(tǒng)若要啟動(dòng)一個(gè)新進(jìn)程工作,其對(duì)資源 Ri的需求應(yīng)滿足不等式: Ri ≧ C(n+1)i+ i=1,..,m,k=1,..,n。 表示進(jìn)程申請(qǐng)任何類(lèi)資源數(shù)不能超過(guò)聲明的最大資源需求數(shù) 一種死鎖避免策略 系統(tǒng)中若要啟動(dòng)一個(gè)新進(jìn)程工作 ,其對(duì)資源 Ri的需求僅當(dāng)滿足下列不等式: Ri ≥ C (n+1)i+ ∑C ki 對(duì) i=1,..,m,k=1,..,n。 表示所有資源要么已被分配 、 要么尚可分配 ? Cki ≤R j 對(duì) i=1,..,m,k=1,..,n。不難證明,按這種策略分配資源時(shí)系統(tǒng)不會(huì)發(fā)生死鎖。 介紹兩種比較實(shí)用的死鎖防止方法 。 (1) 系統(tǒng)形成死鎖的四個(gè)必要條件 –互斥條件:進(jìn)程互斥使用資源 –部分分配條件:申請(qǐng)新資源時(shí)不釋放已占有資源 –不剝奪條件:一個(gè)進(jìn)程不能搶奪其他進(jìn)程占有的資源 –環(huán)路條件:存在一組進(jìn)程循環(huán)等待資源的 死鎖防止 (2) 破壞第一個(gè)條件 ?使資源可同時(shí)訪問(wèn)而不是互斥使用 , 破壞第三個(gè)條件 ?采用剝奪式調(diào)度方法 , ?當(dāng)進(jìn)程在申請(qǐng)資源未獲準(zhǔn)許的情況下 ,如主動(dòng)釋放資源 (一種剝奪式 ),然后才去等待 。 ?例如 , n個(gè)進(jìn)程 P P2, … , Pn, Pi因?yàn)樯暾?qǐng)不到資源 Rj而處于等待狀態(tài) ,而 Rj又被 Pi+1占有 , Pn欲申請(qǐng)的資源被 P1占有 , 此時(shí)這 n個(gè)進(jìn)程的等待狀態(tài)永遠(yuǎn)不能結(jié)束 , 則說(shuō)這 n個(gè)進(jìn)程處于死鎖狀態(tài) 。這種情況下形成了循環(huán)等待,產(chǎn)生死鎖。 若干死鎖的例子 (4) 例4對(duì)臨時(shí)性資源使用不加限制引起死鎖 ?進(jìn)程通信