Prüfung 25.04.08

  • Aufgabe 3:


    Multi-Granularity Locking - irgendwie hab ich noch immer nicht ganz kapiert, wie ich sehe, ob ein deadlock vorliegt oder nicht


    die "einfache" blockierung sieht man ja ganz leicht anhand unserer netten verträglichkeitstabelle


    bitte um eine erklärung für den deadlock - danke!

    "Those who would give up essential Liberty, to purchase a little temporary Safety, deserve neither Liberty nor Safety." - Benjamin Franklin

  • Wenn bei beiden Transaktionen sprich T1 und T2 eine Blockierung stattfindet, dann hat man ein Deadlock.

    Nein, nicht so ganz. T1 und T2 können ja blockiert werden, weil sie darauf warten, dass T3 eine Ressource freigibt. Wenn T3 das tut, dann läuft T1 weiter, wenn T1 seine Ressourcen freigibt, kommt T2 zum Zug.


    Das Wesentliche an einem Deadlock ist, dass es zwischen den beteiligten Prozessen, Transaktionen, ... zyklische Beziehungen in Bezug auf das Warten auf die Freigabe von Ressourcen gibt. Z.B. kann T1 eine Ressource A anfordern, T2 eine Ressource B. Dann fordert T1 B an und, bevor T1 A freigibt, fordert T2 A an. Nun wartet T1 darauf, dass T2 B freigibt, gibt aber A nicht frei. T2 wartet darauf, dass T1 A freigibt, gibt aber seinerseits B nicht frei. Somit geht weder bei T1 noch bei T2 irgendwas weiter, ein Deadlock liegt vor.


    An einem Deadlock können beliebig viele Prozesse, Transaktionen, ... beteiligt sein. Wesentlich ist das zyklische Warten, das ohne Eingriff von außen nicht aufgelöst werden kann.