2015-09-26 18 views
19

Was ist der Unterschied zwischen warten-sterben und Wunde-warten?Was ist der Unterschied zwischen Warten und Warten?

Ich fand, dass beide Techniken der Deadlock-Prävention dasselbe tun (Rollback des älteren Prozesses).

kann mir jeder Körper erklären, was ist der Unterschied zwischen ihnen mit passendem Beispiel.

Antwort

38

Wartestempel-Schema: Es ist eine nicht präventive Technik zur Deadlock-Prävention. Wenn die Transaktion Ti ein Datenelement anfordert, das momentan von Tj gehalten wird, darf Ti nur warten, wenn es einen Zeitstempel kleiner als der von Tj hat (dh Ti ist älter als Tj), andernfalls wird Ti zurückgerollt (Dies).

In diesem Schema, wenn eine Transaktion fordert eine Ressource (Datenelement) zu sperren, die bereits mit einer kollidiere Sperre durch eine andere Transaktion gehalten wird, dann eine der beiden Möglichkeiten auftreten kann -

(1) Wenn TS (Ti) < TS (Tj) - das ist Ti, das eine in Konflikt stehende Sperre anfordert - älter als Tj ist - dann darf Ti warten, bis das Datenelement verfügbar ist.

(2) Wenn TS (Ti)> TS (tj) - das ist Ti ist jünger als Tj - dann stirbt Ti. Ti wird später mit einer zufälligen Verzögerung aber mit demselben Zeitstempel neu gestartet.

Dieses Schema ermöglicht es der älteren Transaktion zu warten, aber tötet die jüngere.

Zum Beispiel:

Angenommen, daß die Transaktion T22, T23, T24 haben Zeitstempel 5, 10 bzw. 15. Wenn T22 ein von T23 gehaltenes Datenelement anfordert, wartet T22. Wenn T24 ein Datenelement anfordert, das von T23 gehalten wird, wird T24 zurückgesetzt.

Wundwarte Schema: Es ist eine präventive Technik zur Deadlock-Prävention. Es ist ein Gegenstück zum Wartestempel-Schema. Wenn die Transaktion Ti ein Datenelement anfordert, das momentan von Tj gehalten wird, darf Ti nur warten, wenn es einen Zeitstempel größer als der von Tj hat, andernfalls wird Tj zurückgerollt (Tj wird durch Ti verwundet).

In diesem Schema, wenn eine Transaktion fordert eine Ressource (Datenelement) zu sperren, die bereits mit widersprüchlicher Sperre durch einige andere Transaktion gehalten wird, eine der beiden Möglichkeiten auftreten kann -

(1) Wenn TS (Ti) < TS (Tj) ist, dann drückt Ti Tj, um zurückgerollt zu werden - das ist Ti Wunden Tj. Tj wird später mit einer zufälligen Verzögerung aber mit demselben Zeitstempel neu gestartet.

(2) Wenn TS (Ti)> TS (Tj), dann muss Ti warten, bis die Ressource verfügbar ist.

Dieses Schema ermöglicht es der jüngeren Transaktion zu warten; Wenn jedoch eine ältere Transaktion einen Gegenstand anfordert, der von einem jüngeren gehalten wird, zwingt die ältere Transaktion den jüngeren, den Gegenstand abzubrechen und freizugeben.

Zum Beispiel:

Angenommen, dass Transaktionen T22, T23, T24 hat Zeitstempel 5, 10 bzw. 15.Wenn T22 ein von T23 gehaltenes Datenelement anfordert, wird das Datenelement von T23 ausgeschlossen, und T23 wird zurückgesetzt. Wenn T24 ein von T23 gehaltenes Datenelement anfordert, wartet T24.

In beiden Fällen wird die Transaktion, die zu einem späteren Zeitpunkt in das System eintritt, abgebrochen.

+1

Wait-Düse und wundWarte werden zuerst in http://dl.acm.org/citation.cfm?id=320260 vorgeschlagen. –

4

Parth hat eine detaillierte Antwort gegeben. Hier fasse ich es anders zusammen.

Angenommen, Ti fordert eine Sperre an, die von Tj gehalten wird. Die folgende Tabelle fasst die ergriffenen Maßnahmen für wait-Chip und wundWarte Schema:

      wait-die   wound-wait 
Ti is younger than Tj  Ti dies   Ti waits 
Ti is older than Tj  Ti waits   Tj aborts 

Beide Systeme bevorzugen ältere Transaktionen mit einem älteren Zeitstempel.

+0

Große Antwort, aber ist 'sterben' wie Abort/Rollback? –

+1

@ P_95 Ja, 'sterben' ist das gleiche wie Abbruch/Rollback. –

0

In beiden Fällen ist Old immer champ, d. H. Wird überleben. Der Unterschied liegt in der Sicht der jüngeren Transaktionen.

Wenn jüngere eine Ressource anfordert, die von einem alten Trans gehalten wird. , in der Warte/stirb, kann er warten, um Respekt zu geben, als Alter trans.Wenn jüngerer um eine Ressource bittet, die von einem alten trans. gehalten wird, in der Wunde/stirbt, wird er Kraft sein, als Alter trans zurückzurollen.

In beiden Schema ist nie alt in Verlust.

Siehe: https://www.tutorialspoint.com/dbms/dbms_deadlock.htm