活鎖和死鎖是什麼意思啊

  • 作者:由 匿名使用者 發表于 攝影
  • 2021-07-26

活鎖和死鎖是什麼意思啊小林學長Vm 2020-01-08

1、活鎖指的是任務或者執行者沒有被阻塞,由於某些條件沒有滿足,導致一直重複嘗試—失敗—嘗試—失敗的過程。處於活鎖的實體是在不斷的改變狀態,活鎖有可能自行解開。

2、死鎖是指兩個或兩個以上的執行緒在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序。

活鎖和死鎖是什麼意思啊

擴充套件資料:

死鎖經常與正常阻塞混淆。事務請求被其他事務鎖定的資源的鎖時,發出請求的事務一直等到該鎖被釋放。預設情況下,除非設定了 LOCK_TIMEOUT,否則 SQL Server 事務不會超時。因為發出請求的事務未執行任何操作來阻塞擁有鎖的事務,所以該事務是被阻塞,而不是陷入了死鎖。最後,擁有鎖的事務將完成並釋放鎖,然後發出請求底事務將獲取鎖並繼續執行。

參考資料來源:

百度百科-死鎖

參考資料來源:

百度百科-活鎖

活鎖和死鎖是什麼意思啊匿名使用者 2013-06-15

活鎖是可以很容易開啟的。死鎖是打不開的。

活鎖和死鎖是什麼意思啊匿名使用者 2013-06-15

活鎖是能用匙鑰打得開的,死鎖是有匙鑰也開不了。

活鎖和死鎖是什麼意思啊Jessic218 推薦於2017-12-16

1。活鎖:資料資源釋放時間不確定,導致某些事務長時間等待,得不到封鎖的機會

死鎖:多個事務各自佔有部分資源等待另一部分資源,資源需求出現迴路,導致事務停頓得不到執行

解決活鎖:先來先服務

解決死鎖:預防:一次封鎖法、順序封鎖法

診斷並解除:超時法、等待圖法

活鎖和死鎖是什麼意思啊我是來嚇寶寶的 推薦於2016-10-15

一、活鎖

如果事務T1封鎖了資料R,事務T2又請求封鎖R,於是T2等待。T3也請求封鎖R,當T1釋放了R上的封鎖之後系統首先批准了T3的請求,T2仍然等待。然後T4又請求封鎖R,當T3釋放了R上的封鎖之後系統又批准了T4的請求,。。。,T2有可能永遠等待,這就是活鎖的情形,如圖8。4(a)所示。

避免活鎖的簡單方法是採用先來先服務的策略。

二、死鎖

如果事務T1封鎖了資料R1,T2封鎖了資料R2,然後T1又請求封鎖R2,因T2已封鎖了R2,於是T1等待T2釋放R2上的鎖。接著T2又申請封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放R1上的鎖。這樣就出現了T1在等待T2,而T2又在等待T1的局面,T1和T2兩個事務永遠不能結束,形成死鎖。

1。 死鎖的預防

在資料庫中,產生死鎖的原因是兩個或多個事務都已封鎖了一些資料物件,然後又都請求對已為其他事務封鎖的資料物件加鎖,從而出現死等待。防止死鎖的發生其實就是要破壞產生死鎖的條件。預防死鎖通常有兩種方法:

① 一次封鎖法

一次封鎖法要求每個事務必須一次將所有要使用的資料全部加鎖,否則就不能繼續執行。

一次封鎖法雖然可以有效地防止死鎖的發生,但也存在問題,一次就將以後要用到的全部資料加鎖,勢必擴大了封鎖的範圍,從而降低了系統的併發度。

② 順序封鎖法

順序封鎖法是預先對資料物件規定一個封鎖順序,所有事務都按這個順序實行封鎖。

順序封鎖法可以有效地防止死鎖,但也同樣存在問題。事務的封鎖請求可以隨著事務的執行而動態地決定,很難事先確定每一個事務要封鎖哪些物件,因此也就很難按規定的順序去施加封鎖。

可見,在作業系統中廣為採用的預防死鎖的策略並不很適合資料庫的特點,因此DBMS在解決死鎖的問題上普遍採用的是診斷並解除死鎖的方法。

2。 死鎖的診斷與解除

① 超時法

如果一個事務的等待時間超過了規定的時限,就認為發生了死鎖。超時法實現簡單,但其不足也很明顯。一是有可能誤判死鎖,事務因為其他原因使等待時間超過時限,系統會誤認為發生了死鎖。二是時限若設定得太長,死鎖發生後不能及時發現。

② 等待圖法

事務等待圖是一個有向圖G=(T,U)。 T為結點的集合,每個結點表示正執行的事務;U為邊的集合,每條邊表示事務等待的情況。若T1等待T2,則T1、T2之間劃一條有向邊,從T1指向T2。事務等待圖動態地反映了所有事務的等待情況。併發控制子系統週期性地(比如每隔1分鐘)檢測事務等待圖,如果發現圖中存在迴路,則表示系統中出現了死鎖。

DBMS的併發控制子系統一旦檢測到系統中存在死鎖,就要設法解除。通常採用的方法是選擇一個處理死鎖代價最小的事務,將其撤消,釋放此事務持有的所有的鎖,使其它事務得以繼續執行下去。當然,對撤消的事務所執行的資料修改操作必須加以恢復。

Top