University of Ulm
Computer Science
Verteilte Systeme/Distributed Systems
Projects   |   Publications   |   Teaching   |   Persons Search   |   Intranet

Current Position
University of Ulm
Computer Science
Distributed Systems Lab
Projects
Aspectix
Student Projects
Ulm
Studentische Arbeiten

Additional Topics
 
 

Multithreading in aktiv replizierten Objekten

Beschreibung:
Im AspectIX-Projekt wird eine objektbasierte Middleware entwickelt, die auf dem fragmentierten Objektmodell beruht; in dieser Middleware wird Fehlertoleranz durch aktive Replikation unterstützt. Hierbei werden zwei Eigenschaften von AspectIX besonders genutzt: ersten die Möglichkeit, transparent objektspezifischen Code ("Fragmente") verteilt bei Diensterbringern und -nutzern zu laden; zweitens die Möglichkeit, diesen Fragmentcode durch Codetransformationsprozesse (teilweise) automatisch zu erzeugen.

Im einfachsten Fall wird bei aktiver Replikation die Konsistenz der Replikate dadurch erreicht, dass alle Replikate alle Operationen strikt sequentiell in gleicher Reihenfolge ausführen; in der Regel wird diese Ordnung durch Zustellen der Aufrufe an alle Replikate durch ein total geordnetes Gruppenkommunikationssystem erreicht. Dies ist aber oft unnötig Ineffizient und kann auch zu Verklemmungen führen.

Die beschriebene Situation lässt sich verbessern, wenn Multithreading bei Methodenaufrufen an der Replikatgruppe unterstützt werden. Hierzu sind geeignete Strategien notwendig, um zu verhindern, dass sich durch unterschiedliche zeitliche Ausführung der Threads Inkonsistenzen zwischen Repliaten ergeben. Verfahren, die hierzu die Laufzeitumgebung (Betriebssystem, JVM) modifizieren, werden im Rahmen dieser Arbeit nicht betrachtet.

Zwei verschiedene Strategien können hier eingesetzt werden: Zum einen kann ein (nichtpreemtives) Thread-Scheduling so implementiert werden, dass immer maximal ein Thread aktiv. Wenn dieser aktive Thread anhält (Ende, Blockierung an einem Lock, an einer Condition Variable, an einem langdauerndem Systemaufruf oder Aufruf an einem anderen entfernten Objekt), wird bei allen Replikaten identisch auf deterministische Weise der nächste Thread ausgewählt. In dieser Variante ist der Zugriff auf gemeinsame Daten (über Semaphore) ohne Kommunikation möglich, dafür müssen alle Thread-anhaltenden und -startenden Operationen von der Infrastruktur koordiniert werden. Diese erste Variante ist (teilweise) bereits in AspectIX implementiert. Zum anderen können Threads beliebig (auch preemtiv) ausgeführt werden, und eine Synchronisierung über das Netzwerk erfolgt nur, wenn Locks angefordert werden, bzw. Zugriffe auf Condition Variables erfolgen. Es ist sicherzustellen, dass Locks bei allen Replikaten in gleicher Reihenfolge zugeteilt werden. Dies erlaubt echte Parallelität (was insbesondere auf Mehr-CPU-Rechnern Vorteile bringt), kostet dafür an anderet Stelle interaktiven Koordinierungsaufwand zwischen den Replikaten)

Geeignet für:
Diplomarbeit
Betreuer:
Prof. Dr. Franz J. Hauck, Dipl. Inf. Hans P. Reiser
Zurück...

Languages
Deutsch
Copyright © 2007 Distributed Systems Lab · Uni Ulm Imprint