死鎖概念?產生死鎖必要條件?如何防止死鎖?

2021-08-08 23:21:42 字數 786 閱讀 1716

死鎖概念:

所謂死鎖,是指兩個或者兩個以上執行緒在執行過程中,因爭奪資源而產生互相等待的現象,若無外力作用,他們都將無法推進下去,此時,稱系統處於死鎖。

死鎖產生的四個必要條件:

(1)互斥條件:程序對所分配的資源進行排它性使用,即在一段時間內某資源只由乙個程序占用。如果此時,還有其它的程序請求該資源,則請求者只能等待。

(2)請求和保持條件:指程序已經保持至少乙個資源,但又提出了新的資源請求,但是該資源正在被其他程序占有,此時,請求程序阻塞,但又對自己所獲得的資源保持不放。

(3)不剝奪條件:指程序已經獲得的資源,在沒有使用完之前,不能被剝奪,只能由該程序使用完後自己釋放。

(4)環路等待條件:指在發生死鎖時,必然存在乙個程序資源的環形鏈,即程序集合中的p0正在等待乙個p1占用的資源,pn正在等待乙個p0占用的資源。

避免死鎖的解決辦法主要有:

(1)死鎖預防:破壞導致死鎖必要條件中的任何乙個就可以預防死鎖。例如,要求使用者申請資源時一次性申請所需要的全部資源,這就破壞了保持和等待條件。將資源分層,得到上一層資源後,才能夠申請下一層資源,它破壞了 環路等待條件。

(2)死鎖避免:避免是指程序在每次申請資源時判斷這些操作是否安全。例如,使用銀行家演算法。

(3)死鎖檢測:死鎖預防和避免都是事前措施,而死鎖的檢測則是判斷系統是否處於死鎖狀態,如果是,則執行死鎖解除策略。

(4)死鎖解除:與死鎖檢測結合使用。它使用的方式就是剝奪。即將某程序所擁有的資源強行收回,分配給其他的程序。

3 4產生死鎖的原因和必要條件

多道程式系統借助併發執行改善資源利用率,提高系統吞吐量,但可能發生一種危險 死鎖。死鎖 deadlock 指多個程序在執行過程中,因爭奪資源而造成的一種僵局。當程序處於這種狀態時,若無外力作用,它們都將無法再向前推進。1.產生死鎖的原因 1 競爭資源引起程序死鎖 可把系統中的資源分為兩類 2 程序推...

死鎖和產生死鎖的四個必要條件以及如何避免和預防死鎖

如果一組程序中的每乙個程序都在等待僅由該組程序中的其它程序才能引發的事件,那麼該組程序就是死鎖的。1 多個執行緒 彼此申請對方資源而導致的死鎖。a申請b的資源時,因為資源被占用,a會被掛起等待b釋放資源,同時b申請a的資源,因資源被占用b掛起等待a釋放資源,而ab都處於掛起狀態又無法釋放資源,便形成...

產生死鎖的必要條件和解決方法

死鎖 多個程序為了競爭資源而造成的僵局,如果沒有外力作用,這些程序將再也不能向前推進。產生死鎖的原因 1.競爭系統資源 2.程序的推進順序不當 產生死鎖的必要條件 互斥條件 進行要求對其分配的資源進行排他控制,即在一段時間內某資源只能為這乙個程序享有。請求和保持條件 當程序因請求資源而阻塞時,對已經...