天天看點

資源配置設定圖化簡法-作業系統·死鎖

一 了解程序資源圖

Markdown編輯器用的還不是太熟,表格中插入圖檔這事還沒學會,糾結着在Word中總結了下,然後截個圖放在下面供大家參考:

資源配置設定圖化簡法-作業系統·死鎖

二 化簡資源配置設定圖

方法步驟

  • 第一步:先看系統還剩下多少資源沒配置設定,再看有哪些程序是不阻塞(“不阻塞”即:系統有足夠的空閑資源配置設定給它)的
  • 第二步:把不阻塞的程序的所有邊都去掉,形成一個孤立的點,再把系統配置設定給這個程序的資源回收回來
  • 第三步:看剩下的程序有哪些是不阻塞的,然後又把它們逐個變成孤立的點。
  • 第四步:最後,所有的資源和程序都變成孤立的點。這樣的圖就叫做“可完全簡化”。

如果一個圖可完全簡化,則不會産生死鎖;如果一個圖不可完全簡化(即:圖中還有“邊”存在),則會産生死鎖。這就是“死鎖定理”。 

執行個體

資源配置設定圖化簡法-作業系統·死鎖
  • 第一步:先看R1資源,它有三個箭頭是向外的,是以它一共給程序配置設定了3個資源,此時,R1沒有空閑的資源剩餘。
  • 第二步:再看R2資源,它有一個箭頭是向外的,是以它一共給程序配置設定了1個資源,此時,R2還剩餘一個空閑的資源沒配置設定。
  • 第三步:看完資源,再來看程序,先看程序P2,它隻申請一個R1資源,但此時R1資源已經用光了,是以,程序P2進入阻塞狀态,是以,程序P2暫時不能化成孤立的點。
  • 第四步:再看程序P1,它隻申請一個R2資源,此時,系統還剩餘一個R2資源沒配置設定,是以,可以滿足P1的申請。這樣,程序P1便得到了它的全部所需資源,是以它不會進入阻塞狀态,可以一直運作,等它運作完後,我們再把它的所有的資源釋放。相當于:可以把P1的所有的邊去掉,變成一個孤立的點,如下圖所示:
資源配置設定圖化簡法-作業系統·死鎖
  • 第五步:程序P1運作完後,釋放其所占有的資源(2個R1資源和1個R2資源),系統回收這些資源後,空閑的資源便變成2個R1資源和1個R2資源,由于程序P2一直在申請一個R1資源,是以此時,系統能滿足它的申請。這樣,程序P2便得到了它的全部所需資源,是以它不會進入阻塞狀态,可以一直運作,等它運作完後,我們再把它的所有的資源釋放。相當于:可以把P2的所有的邊都去掉,化成一個孤立的點,變成下圖:
  • 資源配置設定圖化簡法-作業系統·死鎖

由于這個資源配置設定圖可完全簡化,是以,不會産生死鎖。 

而如果資源配置設定圖中的點,最終不能夠化成孤立的點,則程序資源圖不能夠完全簡化,進而會發生死鎖。

一 了解程序資源圖

Markdown編輯器用的還不是太熟,表格中插入圖檔這事還沒學會,糾結着在Word中總結了下,然後截個圖放在下面供大家參考:

資源配置設定圖化簡法-作業系統·死鎖

二 化簡資源配置設定圖

方法步驟

  • 第一步:先看系統還剩下多少資源沒配置設定,再看有哪些程序是不阻塞(“不阻塞”即:系統有足夠的空閑資源配置設定給它)的
  • 第二步:把不阻塞的程序的所有邊都去掉,形成一個孤立的點,再把系統配置設定給這個程序的資源回收回來
  • 第三步:看剩下的程序有哪些是不阻塞的,然後又把它們逐個變成孤立的點。
  • 第四步:最後,所有的資源和程序都變成孤立的點。這樣的圖就叫做“可完全簡化”。

如果一個圖可完全簡化,則不會産生死鎖;如果一個圖不可完全簡化(即:圖中還有“邊”存在),則會産生死鎖。這就是“死鎖定理”。 

執行個體

資源配置設定圖化簡法-作業系統·死鎖
  • 第一步:先看R1資源,它有三個箭頭是向外的,是以它一共給程序配置設定了3個資源,此時,R1沒有空閑的資源剩餘。
  • 第二步:再看R2資源,它有一個箭頭是向外的,是以它一共給程序配置設定了1個資源,此時,R2還剩餘一個空閑的資源沒配置設定。
  • 第三步:看完資源,再來看程序,先看程序P2,它隻申請一個R1資源,但此時R1資源已經用光了,是以,程序P2進入阻塞狀态,是以,程序P2暫時不能化成孤立的點。
  • 第四步:再看程序P1,它隻申請一個R2資源,此時,系統還剩餘一個R2資源沒配置設定,是以,可以滿足P1的申請。這樣,程序P1便得到了它的全部所需資源,是以它不會進入阻塞狀态,可以一直運作,等它運作完後,我們再把它的所有的資源釋放。相當于:可以把P1的所有的邊去掉,變成一個孤立的點,如下圖所示:
資源配置設定圖化簡法-作業系統·死鎖
  • 第五步:程序P1運作完後,釋放其所占有的資源(2個R1資源和1個R2資源),系統回收這些資源後,空閑的資源便變成2個R1資源和1個R2資源,由于程序P2一直在申請一個R1資源,是以此時,系統能滿足它的申請。這樣,程序P2便得到了它的全部所需資源,是以它不會進入阻塞狀态,可以一直運作,等它運作完後,我們再把它的所有的資源釋放。相當于:可以把P2的所有的邊都去掉,化成一個孤立的點,變成下圖:
  • 資源配置設定圖化簡法-作業系統·死鎖

由于這個資源配置設定圖可完全簡化,是以,不會産生死鎖。 

而如果資源配置設定圖中的點,最終不能夠化成孤立的點,則程序資源圖不能夠完全簡化,進而會發生死鎖。

一 了解程序資源圖

Markdown編輯器用的還不是太熟,表格中插入圖檔這事還沒學會,糾結着在Word中總結了下,然後截個圖放在下面供大家參考:

資源配置設定圖化簡法-作業系統·死鎖

二 化簡資源配置設定圖

方法步驟

  • 第一步:先看系統還剩下多少資源沒配置設定,再看有哪些程序是不阻塞(“不阻塞”即:系統有足夠的空閑資源配置設定給它)的
  • 第二步:把不阻塞的程序的所有邊都去掉,形成一個孤立的點,再把系統配置設定給這個程序的資源回收回來
  • 第三步:看剩下的程序有哪些是不阻塞的,然後又把它們逐個變成孤立的點。
  • 第四步:最後,所有的資源和程序都變成孤立的點。這樣的圖就叫做“可完全簡化”。

如果一個圖可完全簡化,則不會産生死鎖;如果一個圖不可完全簡化(即:圖中還有“邊”存在),則會産生死鎖。這就是“死鎖定理”。 

執行個體

資源配置設定圖化簡法-作業系統·死鎖
  • 第一步:先看R1資源,它有三個箭頭是向外的,是以它一共給程序配置設定了3個資源,此時,R1沒有空閑的資源剩餘。
  • 第二步:再看R2資源,它有一個箭頭是向外的,是以它一共給程序配置設定了1個資源,此時,R2還剩餘一個空閑的資源沒配置設定。
  • 第三步:看完資源,再來看程序,先看程序P2,它隻申請一個R1資源,但此時R1資源已經用光了,是以,程序P2進入阻塞狀态,是以,程序P2暫時不能化成孤立的點。
  • 第四步:再看程序P1,它隻申請一個R2資源,此時,系統還剩餘一個R2資源沒配置設定,是以,可以滿足P1的申請。這樣,程序P1便得到了它的全部所需資源,是以它不會進入阻塞狀态,可以一直運作,等它運作完後,我們再把它的所有的資源釋放。相當于:可以把P1的所有的邊去掉,變成一個孤立的點,如下圖所示:
資源配置設定圖化簡法-作業系統·死鎖
  • 第五步:程序P1運作完後,釋放其所占有的資源(2個R1資源和1個R2資源),系統回收這些資源後,空閑的資源便變成2個R1資源和1個R2資源,由于程序P2一直在申請一個R1資源,是以此時,系統能滿足它的申請。這樣,程序P2便得到了它的全部所需資源,是以它不會進入阻塞狀态,可以一直運作,等它運作完後,我們再把它的所有的資源釋放。相當于:可以把P2的所有的邊都去掉,化成一個孤立的點,變成下圖:
  • 資源配置設定圖化簡法-作業系統·死鎖

由于這個資源配置設定圖可完全簡化,是以,不會産生死鎖。 

而如果資源配置設定圖中的點,最終不能夠化成孤立的點,則程序資源圖不能夠完全簡化,進而會發生死鎖。

繼續閱讀