2010-03-21 236 views

回答

18

你可以把它看成:

避免:當accsessing共享資源,使用信號:不要跨進程/線程多張

防止共享資源。如果鎖定了多個信號量,請確保以相反的鎖定順序解鎖。始終確保處理關鍵部分內的錯誤,以便在所有條件下釋放信號量。

3

避免死鎖:手段,每當請求某一特定資源由特定工藝製成,你看看可用的資源,如果未來資源的進程的需要已經在使用的資源,確定在資源被授予的情況下發生死鎖的可能性。如果可能的話,不要授予資源,如果不可能,則授予資源。

死鎖預防:確保至少有一個發生死鎖的條件在任何時候都不滿足。這可以通過在系統中請求和授予資源的方式來實現。

20

僵局:

死鎖是一種情況,兩個或兩個以上相互競爭的行動都在等待對方來完成,因而沒有過一樣。它也可以定義爲一組被阻塞的進程,每個進程擁有一個資源並等待獲取集合中另一個進程擁有的資源。

例如,如果有一個系統有兩個磁盤驅動器。如果有兩個進程P1和P2分別保存一個磁盤驅動器並且每個都需要另一個,則發生死鎖情況。

•互斥: 以下條件將同時在僵局的情況下舉行只有一個進程時可以使用資源

•保持和等待:一個進程保持至少一個資源正在等待獲取其他進程

•無搶佔舉行額外資源:資源只能自願公佈由過程拿着它,這個過程完成後,其任務

•循環等待:存在一組{P0, P1,...,Pn}等待進程成功h P0正在等待P1保存的資源,P1正在等待P2保存的資源...... Pn-1正在等待Pn保存的資源,並且Pn正在等待一個資源由P0持有。是

死鎖預防,避免和檢測之間的區別如下:

預防

•我們的目標是確保死鎖的必要條件不能認爲至少一個。

•死鎖預防通常無法實施。

•系統不需要額外的關於每個過程的每種資源潛在用途的附加信息。

•爲了讓系統防止死鎖狀態,它不需要知道存在,可用和請求的所有資源的所有細節。

•死鎖預防技術包括非阻塞的同步算法,序列化令牌,Dijkstras算法等

•死鎖的預防資源分配策略是保守的,它在提交的資源。

•一次請求所有資源。

•在某些情況下,搶先超過常規需要。

迴避:

•爲避免死鎖的目標是到系統不能進入不安全狀態。

•避免死鎖通常無法實現。

•系統需要有關每個過程的每種資源總體潛在用途的附加先驗信息。

•爲了讓系統能夠確定下一個狀態是安全還是不安全,它必須提前知道存在,可用和請求的所有資源的數量和類型。

•死鎖避免技術包括銀行家算法,等待/模具,傷口/等待等

•資源分配策略避免死鎖選擇該檢測和預防的中間。

•需要操縱,直到找到至少一條安全路徑。

•沒有先佔。

檢測:

•我們的目標是發生或者發生之前之後檢測到死鎖。

•在發生死鎖之前檢測死鎖的可能性要困難得多,而且實際上通常是不可判定的。但是,在特定環境中,使用鎖定資源的特定手段,死鎖檢測可能是可判定的。

•在所有情況下,系統不需要額外的關於每個過程的每種資源潛在用途的附加先驗信息。

•爲了讓系統檢測到死鎖情況,它不需要知道存在,可用和請求的所有資源的所有細節。

•死鎖檢測技術包括但不限於模型檢查。該方法構建了一個有限狀態模型,在該模型上執行進度分析並查找模型中的所有可能的終端集。

•死鎖檢測的資源分配策略非常寬鬆。資源按要求授予。

•需要定期調用以測試死鎖。

•可以看到搶佔。

0

死鎖預防和死鎖避免

死鎖預防之間的區別:
通過約束如何對資源的請求,可以在系統中進行,它們是如何被處理(系統設計)防止死鎖。 目標是確保至少有一個死鎖的必要條件永遠不會成立。

死鎖避免:
系統動態地考慮每一個請求,並決定它是否是安全的在這一點上授予它, 系統需要關於每個進程的總體潛在用途每個資源的附加先驗信息。 允許更多的併發性。 類似於交通燈 和指揮交通的警務人員之間的區別。