Next: Beispiele
Up: Synchronisierung
Previous: Feinstruktur von Monitoren
  Inhalt
Die Notwendigkeit für eine Metasperre stellt keinen rekursiven Schluß
dar, da Metasperren stark vereinfachte Eigenschaften aufweisen:
- Metasperren werden nicht rekursiv erworben. Damit
braucht kein Zähler der Rekursionstiefe geführt zu werden.
- Ein Thread hält maximal eine Metasperre zur Zeit. Es ist also
durch Normalisierung dieser 1:[0..1]-Beziehung möglich,
Informationen aus der Monitorstruktur direkt dem besitzenden Thread,
statt einer zusätzlichen Struktur zuzuordnen. Es wird sich später
zeigen, wie sich diese Eigenschaft ausnutzen lässt.
- Metasperren werden nur über definierte, kurze Codestücke
gehalten. Kann man sicherstellen, daß einem Thread, der eine
Metasperre hält, nicht über einen längeren Zeitraum der Prozessor
entzogen wird, so ist es vertretbar, eine Metasperre durch
spin-locking zu realisieren, und es brauchen keine Wartelisten
geführt zu werden. Dies hängt vor allem von der
Unterbrechungsstrategie der Thread-Implementierung ab.
Als Folge lässt sich eine Metasperre auf ein Maschinenwort reduzieren,
das mit Hilfe atomarer Maschineninstruktionen (z.B. CAS
[SPARC, 1998]) erworben wird. Abbildung
5.5 stellt die vereinfachte
Monitorimplementierung ergänzt um Metasperren dar.
Abbildung 5.5:
Pseudo-Implementierung der Monitoroperationen
monitorenter und monitorexit erweitert um
Metasperren
 |
Next: Beispiele
Up: Synchronisierung
Previous: Feinstruktur von Monitoren
  Inhalt
2001-02-28