操作系統之死鎖的避免

死鎖的防止:是在申請資源時,採取某種策略,來以此防止產生死鎖。是用防來不產生死鎖。
死鎖的避免:採用避的方式來不產生死鎖。
安全狀態:如果操作系統能保證所有進程在有限的時間內得到需要的全部資源,則稱系統處於安全狀態,否則說系統是不安全的。顯然,處於安全狀態的系統不會發生死鎖,而處於不安全狀態的系統可能會發生死鎖。

  1. 銀行家算法
    這個算法就是讓系統處於安全狀態,從而避免死鎖的產生。
    這個算法的內容是:銀行家可以把一定數量的資金供多個用戶週轉使用。爲保證資金的安全,銀行家規定:
    (1)當一個用戶對資金的最大需求量不超過銀行家現有的資金時,就接納該用戶;
    (2)用戶可以分期貸款,但貸款總數不能超過最大需求量;
    (3)當銀行家現有的資金不能滿足用戶的尚需貸款數時,可以推遲支付,但總能使用戶在有限的時間裏得到貸款;
    (4)當用戶得到所需的全部資金後,一定能在有限時間裏歸還所有的資金。
    我們按照銀行家算法來申請資源一定不會產生死鎖。即這樣就避免了死鎖的產生。
    死鎖的防止並沒有按照某種算法去申請資源,它只是在申請資源時,進行一個判斷,如自己所申請的資源被其他進程佔用,自己該採取的方式是什麼。
    其實不管是避免,還是防止,都是在告訴我們操作系統需採取什麼樣的方式來不使系統產生死鎖,使系統處於一種安全狀態。一個防一個避免,防是在做的過程中再決定自己應該怎麼做,而避則提前就知道應該怎麼做可以不產生死鎖。這就是兩者之間的差別。
發佈了105 篇原創文章 · 獲贊 37 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章