wait-die和wound-wait有什麼區別?wait-die和wound-wait有什麼區別?
我發現這兩種死鎖預防技術都是做同樣的事情(回退舊的過程)。
可以任何人解釋我,他們之間有什麼區別與合適的例子。
wait-die和wound-wait有什麼區別?wait-die和wound-wait有什麼區別?
我發現這兩種死鎖預防技術都是做同樣的事情(回退舊的過程)。
可以任何人解釋我,他們之間有什麼區別與合適的例子。
等死模式:這是一種非搶先式的預防死鎖技術。當事務Ti請求當前由Tj存儲的數據項時,只有當Ti具有比Tj小的時間戳(即Ti比Tj更早)時才允許Ti等待,否則Ti被回滾(死亡)。
在該方案中,如果事務請求鎖定資源(數據項),這是由另一個事務與衝突鎖已經保持,然後的兩種可能性之一可能發生 -
(1)如果TS(Ti)< TS(Tj) - 即請求衝突鎖的Ti比Tj早 - 則允許Ti等待,直到數據項可用。如果TS(Ti)> TS(tj) - 即Ti比Tj年輕 - 則Ti死亡。 Ti稍後以隨機延遲重啓,但具有相同的時間戳。
該方案允許舊的交易等待,但殺死年輕的交易。
例如:
假設交易T22,T23,T24有時間標記5,分別爲10和15。如果T22請求T23保存的數據項,則T22將等待。如果T24請求T23保存的數據項,則T24將被回滾。
傷口等待方案:這是一種預防死鎖的技術。這是等待死亡計劃的一個對等物。當事務Ti請求當前由Tj持有的數據項時,只有當Ti具有大於Tj的時間戳時,才允許Ti等待,否則Tj被回滾(Tj受Ti影響)。
在該方案中,如果事務請求鎖定資源(數據項),這是由一些用衝突鎖已持有另一事務中的兩種可能性之一可能發生 -
(1)如果TS(Tj),那麼Ti迫使Tj被回滾 - 即Ti纏繞Tj。 Tj稍後以隨機延遲重啓,但具有相同的時間戳。如果TS(Ti)> TS(Tj),則Ti被迫等待,直到資源可用爲止。如果TS(Ti)> TS(Tj)
這個方案,允許年輕的交易等待;但是當較舊的交易請求較年輕的交易時,較舊的交易強制較年輕的交易放棄並釋放該項目。
例如:
假設交易T22,T23,T24有時間標記5,分別爲10和15。如果T22請求T23保存的數據項,則數據項將從T23被搶佔,並且T23將被回滾。如果T24請求T23保存的數據項,則T24將等待。
在這兩種情況下,中止在後期進入系統的事務。
Parth給出了詳細的答案。這裏我用不同的方式總結它。
假設Ti請求由Tj持有的鎖。下表總結了採取觀望模具和傷口等待方案的行動:
wait-die wound-wait
Ti is younger than Tj Ti dies Ti waits
Ti is older than Tj Ti waits Tj aborts
這兩種方案都喜歡舊的交易與舊的時間戳。
很好的答案,但是與死亡/回滾相同嗎? –
@ P_95是的,'die'和abort/rollback是一樣的。 –
在這兩種情況下,老總是冠軍即將生存。區別在於年輕的交易觀點。
如果年輕人正在請求一箇舊版本所持有的資源。在等待/死亡時,他可以等待,如同老式的轉變一樣。如果年輕的一方要求舊式轉化所持有的資源,那麼在傷口/死亡時他會被迫作爲老式轉化。
在這兩個計劃中,老是永遠不會丟失。
等待死亡,傷口等待在http://dl.acm.org/citation.cfm?id=320260首次提出。 –