Next: Das Expansionsprotokoll nach Onodera
Up: Variable Monitordarstellungen
Previous: Stack-Allokation von Monitoren
  Inhalt
Thin Locks
[Bacon et al., 1998] schlagen eine andere Optimierung des
Sperrprotokolls vor: ein Feld im Objektkopf wird bimodal genutzt; zum
einen, um direkt einen Monitor zu kodieren, zum anderen, um einen
Verweis auf eine separate Monitorstruktur zu halten. Nur der Besitzer
des Monitors ist in der Lage, das Feld zu verändern.
Die beiden häufigsten -- und einfachsten -- Monitorzustände werden
direkt in diesem Feld kodiert:
- ein unbenutzter Monitor -- das Feld im Objektkopf enthält den
Wert 0.
- ein erworbener Monitor ohne Erwerbungskonflikt, ohne Wartende
und mit kleiner Rekursionstiefe -- das Feld im Objektkopf enthält
die Thread-Id des Besitzers und die Rekursionstiefe.
Der Vorteil von thin locks besteht darin, daß dominierende
Fall eines Monitors ohne Erwerbungskonflikt, der wenige Male rekursiv
erworben wurde, hier stark optimiert wird:
- Das erstmalige Erwerben des Monitors erfolgt durch ein
load-reserve/store-conditional Paar der PowerPC-Architektur
[May et al., 1994] (vgl. Jalapeño in Abschnitt
5.4.3), vorausgesetzt das gelesene Feld im
Objektkopf enthält den Wert 0.
- Enthält das Feld einen Wert ungleich 0, ist aber der Besitzer
der aktuelle Thread, so kann der Rekursionszähler ohne Einsatz
atomarer Instruktionen erhöht werden.
- Die Monitorfreigabe kann durch einfaches Überschreiben des
Feldes im Objektkopf erfolgen. Insbesondere braucht keine atomare
Instruktion verwendet zu werden.
Im Falle eines Konfliktes muß das thin lock in eine
Monitorstruktur konvertiert werden -- es muß expandiert werden. Das
von [Bacon et al., 1998] vorgeschlagene Expansionsprotokoll hat
mehrere Schwachpunkte:
- Der nächste Erwerber ist zuständig für die Konversion. Dazu muß
er aktiv auf dem Objekt warten busy waiting, bis der
Monitor freigegeben wurde (das Feld im Objektkopf den Wert 0
enthält). Dies kann für unbestimmte Zeit nötig sein, und bedeutet
damit eine Verschwendung von Prozessorzeit.
- Es gibt keinen Mechanismus, die Konversion rückgängig zu machen
(deflation). Monitore, bei deren Erwerb nur einmal ein
Konflikt aufgetreten ist, bleiben dann unnötigerweise im
schwergewichtigen Zustand.
Das Modell von [Bacon et al., 1998] wurde in beiden Punkten
signifikant von [Onodera and Kawachiya, 1999] verbessert. Das
Expansionsprotokoll verzichtet auf busy waiting, und die
Rückführung eines Monitors in den leichtgewichtigen Zustand wird
unterstützt.
Next: Das Expansionsprotokoll nach Onodera
Up: Variable Monitordarstellungen
Previous: Stack-Allokation von Monitoren
  Inhalt
2001-02-28