| |
20
se entweder Lese-, Schreib- oder keinen Zugang zu den einzelnen Speicherseiten haben.
Wird eine Seite auf dem Rechner lokal geha lten (bzw. dort repliziert), so können nor-
male Maschineninstruktionen für den Speicherzugriff verwendet werden. Andernfalls
wird ein Page-Fehler ausgelöst und eine Kopie der Seite von dem entfernten Aufent-
haltsort angefordert. Im Gegensatz zum SVM ist das SDO ein strukturierter high- level
Ansatz, der vollständig in Software implementiert ist. Dabei wird der Speicher auch
nicht als flacher Adressraum eingeteilt, sondern gemeinsame Daten werden in Objekten
gekapselt, auf die - als Instanzen von benutzerdefinierten abstrakten Datentypen (ADT)
-
nur über spezifizierte Methoden zugegriffen werden kann. Statt die Partitionierung
des Adressraums vom System vornehmen zu lassen (wie beim SVM), geschieht dies
implizit durch den Programmierer [Jo96].
In VS gibt es verschiedene Probleme beim Übernehmen von GC-Algorithmen, die für
GC auf einem Rechner oder für Multiprozessoren mit gemeinsamem Speicher kon-
struiert sind. Beispielsweise führt die Kommunikation über ein Netzwerk - die deutlich
langsamer und fehleranfälliger ist als busbasierte Kommunikation eines Multiprozessor-
systems - dazu, dass beispielsweise für Tracing -Verfahren Terminierungsmechanismen
mit hohen Kosten nötig sind, während beim Reference Counting Probleme mit verlore-
nen Nachrichten auftreten [Pl95]. Neben Robustheit als zusätzlicher Anforderung für
einen GC-Algorithmus in einem VS muss dieser beispielsweise auch damit zurecht-
kommen, dass eine vermeintlich tote Zelle wieder Nachrichten an aktive Zellen
schickt und somit eine neue Verbindung in einem Erreichbarkeitsgraphen herstellen
kann. Auch eine Synchronisation mehrerer Rechnerknoten muss geregelt werden, um
korrekt bestimmen zu können, ob ein Objekt noch benötigt wird oder nicht. Das ein-
fachste Modell ist das sogenannte stop-the-world Protokoll, bei dem alle Prozessoren
zur GC kooperieren und aufhören, Verbindungen in einem Erreichbarkeitsgraphen zu
verändern [Jo96].
GC-Algorithmen in VS nutzen unterschiedliche Ansatzpunkte. Beispielsweise setzen sie
bei einer Einteilung der Objekte in passive Objekte - die nur Daten halten, aber einen
externen Kontroll- Thread haben -
und aktive Objekte, die diesen auch beinhalten, an.
Ein Actor-orientes Modell erlaubt, dass ein vom Root Set unabhängiges Objekt wieder
lebendig wird, indem es Nachrichten zu einem lebenden Objekt schickt. Bei dem hie-
rarchischen Ansatz werden Objekte als lokal oder global klassifiziert, abhängig davon,
ob sie innerhalb des Adressraums eines betrachteten Prozessors liegen oder nicht. Hier-
bei wird häufig angenommen, dass es lokale Garbage Collectoren auf Prozessorebene
und einen oder mehrere globale auf Netzwerkebene gibt. Außerdem ist ein weiterer As-
pekt, wie zyklischen Strukturen behandelt werden. Beispielsweise können globale Zyk-
len ignoriert oder auf Netzwerkebene gemanaged werden [Jo96].
|  |
|
| |
|
|