next up previous contents
Next: Formalisierung Up: Nebenläufigkeit Previous: Threads und Synchronisierung in   Inhalt


Das Speichermodell

Die nebenläufige Ausführung von Threads hat eine weitere maßgebliche Konsequenz: die im sequentiellen Fall weitgehend transparenten Lese- und Schreiboperationen auf dem globalen Speicher gewinnen an Komplexität, und ihre Semantik muß durch ein entsprechendes Modell, das Speichermodell definiert werden. Die folgenden Abschnitte erläutern den Begriff des Speichermodells im Allgemeinen und in Anwendung auf Java.

Zu den Basisoperationen der Von-Neumann-Architektur zählen das Lesen und Verändern des globalen Heap, also das Lesen und Schreiben von Speicherzellen. Das Verhalten dieser Operationen auf Uniprozessorarchitekturen ist einfaches und intuitiv: alle Speicheroperationen sind global -- in Programmreihenfolge -- geordnet und das Lesen eines Feldes liefert den Wert, der zuletzt geschrieben wurde.

Nach dieser Betrachtung sind Operationen auf disjunkten Speicherzellen unabhängig voneinander, d.h. es ist beispielsweise für zwei Schreiboperationen nicht definiert, welche zuerst ausgeführt wurde. Dadurch eröffnet sich eine Zahl von Optimierungsmöglichkeiten für den Prozessor, um insbesondere die hohe Latenz des Speicherzugriffs zu umgehen. Beispielsweise kann der Prozessor Schreiboperationen so umordnen, so daß sie die gleiche Cache-Zeile betreffen und en bloque in den Speicher geschrieben werden können.




next up previous contents
Next: Formalisierung Up: Nebenläufigkeit Previous: Threads und Synchronisierung in   Inhalt

2001-02-28