\chapter{Zusammenfassung und Ausblick}
\label{Zusammenfassung}
Die vorliegende Arbeit beschreibt Synchronisationsmechanismen für
nebenläufige Ak\-ti\-vi\-täten im Umfeld persistenter Objektsysteme.
Für das dieser Arbeit zugrundeliegende, persistente Objektsystem
Tycoon werden portable, persistente und migrationsfähige
Basismechanismen zur Synchronisation implementiert. Das Tycoon-System
stellt seinen Benutzern mit der Programmiersprache TL sehr
leistungsfähige Mechanismen wie Polymorphismus, Funktionen höherer
Ordnung sowie die Möglichkeit zur Erweiterung der Basissprache zur
Verfügung. Diese Sprachmittel gestatten es, bei der Auswahl von
Synchronisationsmethoden Aspekte wie sichere Benutzbarkeit und
Verständlichkeit von Synchronisationsmechanismen zunächst in den
Hintergrund zu stellen.  Vielmehr erlauben die genannten
Systemeigenschaften die Bereitstellung einer Hierarchie von
Synchronisationsmethoden, deren untere Ebenen auf Schwerpunkte wie
leichte Implementierbarkeit und Erweiterbarkeit ausgerichtet sind.
Sicherheit und leichte Verständlichkeit bei der Benutzung werden durch
den Einsatz von Funktionen höherer Ordnung und Syntaxerweiterungen
erreicht.  Den Benutzern des Systems stehen damit eine Reihe von
flexiblen und erweiterbaren Synchronisationsmechanismen zur Verfügung.

Die Synchronisationsmechanismen werden auf der Grundlage eines
portablen Mechanismus für den atomaren Ablauf von TL-Funktionen
aufgebaut. Die Portabilität dieses Mechanismus erlaubt die
unmittelbare Benutzung von Synchronisationsmechanismen auf allen für
das Tycoon-System verfügbaren Betriebssystemplattformen. Der Aufwand
für die Sicherstellung der Persistenz des atomaren Grundmechanismus
ist auf wenige Eingriffe in das Tycoon-Laufzeitsystem beschränkt.

Der alleinige Einsatz der Programmiersprache TL zur Implementation
aufbauender Mechanismen sichert die Persistenz dieser Mechanismen.
Synchronisationsmechanismen im Tycoon-System verhalten sich wie alle
anderen im System vorhandenen, persistenten Objekte.

Der geschichtete Aufbau der Synchronisationsmechanismen sichert
weiterhin deren potentielle Mobilität, da in jedem Tycoon-System,
unabhängig vom zugrundeliegenden Be\-triebs\-sy\-stem, der gleiche
Grundmechanismus zur Ermöglichung atomarer Vorgänge vorhanden ist.
Die Festlegung der Mobilitätseigenschaften von
Synchronisationmechanismen erfolgt durch den für alle TL-Objekte
verfügbaren Mechanismus der Registrierung als ubiquitäre Ressource.
Besonderheiten, die bezüglich der Synchronisationsmechanismen bei der
Migration von Aktivitäten vorliegen, wurden in der Implementation
berücksichtigt.

Der Aufbau der Mechanismen orientiert sich weitgehend an vorhandenen
Standards zur Threadsynchronisation in Programmiersprachen und
Betriebssystemen. Dadurch sind diese Mechanismen für schon mit
derartigen Standards vertraute Benutzer besonders einfach zu
verwenden.


\section{Erfahrungen mit dem Tycoon-System}
Das Tycoon-System bietet durch seinen klar verständlichen,
geschichteten Aufbau eine komfortable Arbeitsgrundlage für die
Implementation portabler, persistenter und mobiler
Synchronisationsmechanismen in persistenten Objektsystemen. Die
mächtigen, zur Verfügung stehenden Sprachmittel, das hierarchische
Modulkonzept und das Vorhandensein von Mechanismen zur Manipulation
grundlegender Spracheigenschaften erleichtern darüber hinaus die
Schaffung generischer, erweiterbarer Synchronisationsmechanismen. Die
praktische Implementation der Mechanismen stieß jedoch auf eine Reihe
von Problemen, die eng mit dem derzeitigen, experimentellen Stand des
Laufzeitsystems verknüpft sind.  Durch das dieser Arbeit
zugrundeliegende Thema wurde zum ersten Mal massiv mit nebenläufigen
Threads sehr großer Anzahl gearbeitet, die zudem interagieren und
miteinander kommunizieren.  Dadurch war es möglich, noch im
Laufzeitsystem vorhandene Fehler und Probleme zu identifizieren. Diese
teilweise sehr subtilen Probleme, deren wahre Ursachen durch die
vorhandene Nebenläufigkeit oft schwer zu lokalisieren waren, nahmen in
der Implementationsphase einen nicht unerheblichen Teil der zur
Verfügung stehenden Zeit in Anspruch. So zeigten sich verschiedene
Probleme sowohl in der Verwaltung der Koroutinen als auch in der
Interaktion zwischen Laufzeitsystem und Speicherprotokoll TSP.  Die
zuvor mit der Portierung der ersten und der derzeitigen zweiten
Version des Tycoon-Systems auf ein Unix-Betriebssystem gemachten
Erfahrungen erwiesen sich jedoch bei der Beseitigung dieser Probleme
als großer Vorteil.  Zusammenfassend ergibt sich daher, zusätzlich zur
Verfügbarkeit persistenter, migrationsfähiger
Synchronisationsmechanismen, eine erhöhte Stabilität und
Fehlerfreiheit des gesamten Tycoon-Systems für die Benutzung
nebenläufiger Aktivitäten.

\section{Der Stand der Implementierung}
Die Implementation der in Kapitel~\ref{Syncprimitive} besprochenen
Mechanismen ist weitgehend abgeschlossen und ausgetestet.
%Lediglich für die Benutzung zeitlich beschränkter Wartefunktionen in Aufruf
%{\em condition.timedWait} ist noch Implementationsbedarf vorhanden.  Jedoch ist
%die grundsätzliche Funktionalität des zeitgesteuerten Wartens bereits im
%Laufzeitsystem verwirklicht, so daß der abschließende Aufwand zur
%Fertigstellung der angesprochenen Funktion sehr gering ist.
%Die in Abschnitt~\ref{HIGHER} gezeigten Techniken für
%erweiterte Syn\-chro\-ni\-sa\-tions\-ver\-fah\-ren stellen den
%Benutzern Muster zu Verwirklichung selbstentwickelter Verfahren zu
%Verfügung. 
%Von Interesse kann hier auch die zusätzliche Implementation
%weiterer erweiterter Methoden wie beispielsweise Pfadausdrücke und
%bedingte kritische Regionen sein.
Die mit der Synchronisation nebenläufiger Aktivitäten einhergehenden Probleme,
wie beispielsweise Verklemmungen, bedürfen noch einer weiteren Behandlung.
Jedoch wurden bei der Implementation der Mechanismen bereits Vorkehrungen für
die Lösung derartiger Probleme getroffen. So ist bereits ein Zugriff auf die
durch einen Thread gehaltenen Synchronisationsobjekte im Laufzeitsystem
vorgesehen. Diese Informationen bilden zusammen mit der Liste der auf ein
Synchronisationsobjekt wartenden Threads die Grundlage zur Implementation
bekannter Algorithmen zur Erkennung, Vermeidung und Auflösung von
Verklemmungen.

Eine der umfangreichsten, noch zu behandelnden Aufgaben im
Zusammenhang mit nebenläufigen Threads und deren Synchronisation
bilden die bereits in großem Umfang vorhandenen, generischen
Modulbibliotheken des Tycoon-Systems. Hier ist es erforderlich, jedes
Modul auf die Eignung durch eine nebenläufige Benutzung zu untersuchen
und gegebenenfalls unter Benutzung der implementierten
Synchronisationsmechanismen zu modifizieren. Von besonderem Interesse
sind hier die vorhandenen Bibliotheken zur Verwaltung von Massendaten,
deren sichere, nebenläufige Benutzung zu gewährleisten ist.

\section{Resümee und Ausblick}
Im Rahmen der Architektur des derzeitigen Tycoon-Systems ist mit den
implementierten Mechanismen zur Synchronisation eine adäquate Lösung
von Synchronisationsproblemen möglich.  

Jedoch ist die Verwirklichung von Synchronisationsmechanismen für
persistente Objektsysteme mit der vorliegenden Arbeit keinesfalls
abgeschlossen. Gravierende Probleme treten bei der Behandlung
migrierender Threads im Zusammenhang mit Synchronisationsmechanismen
auf. Ein Teil der Verantwortung für die korrekte Verwendung von
Thread-Migration und Synchronisationsmechanismen liegt in den Händen
des Benutzers. Jedoch werden für diesen Zweck durch die in
Kapitel~\ref{Migration} vorgestellten Maßnahmen Hilfsmittel
zur Verfügung gestellt. Da die dort vorgestellten Effekte nicht nur
durch die Verwendung von Synchronisationsmechanismen, sondern immer im
Zusammenhang mit der Speicherung von Threads auftreten, ist
hier noch weiterer Forschungsbedarf gegeben.

Ein weiteres, interessantes offenes Thema stellt die Ausnutzung von
der in vielen Rechensystemen vorhandenen Mehrprozessorfähigkeit durch
das Tycoon-System dar. Eine derartige Erweiterung scheint jedoch
erhebliche Auswirkungen auf Teile des Tycoon-Systems zu haben:
\begin{itemize}
\item Zur Ausnutzung der Fähigkeiten zur echten Parallelität von
  Mehrprozessorsystemen ist die Benutzung von Threadmechanismen
  notwendig, die schon von diesen Systemen bereitgestellt werden. Dies
  eröffnet die Frage nach der Implementation persistenter Threads auf Basis
  betriebssystemspezifischer Threads.
\item Nebenläufige Threads auf Mehrprozessorsystemen lassen die
  Verwendung von Objektspeichern, die ebenfalls eine interne
  nebenläufige Verarbeitung unterstützen, notwendig erscheinen.  Auch
  muß durch die im TSP vorhandenen Mechanismen gegebenenfalls eine
  Verzögerung von Threads veranlaßt werden können. Ein solches
  Verhalten erfordert die Verwendung von spezifischen Methoden des
  Laufzeitsystems und steht im Widerspruch zum bisherigen
  Systemaufbau.
\item Die Verwendung betriebssysteminterner
  Synchronisationsmechanismen muß, zumindest teilweise, auf einer
  Ebene unterhalb der Programmiersprache TL erfolgen.  Verwendete,
  flüchtige Datenstrukturen müssen persistent gemacht werden und bei
  der automatischen Speicherrückgewinnung berücksichtigt werden. So
  muß angeforderter, flüchtiger Systemspeicher bei der Beseitigung
  zugeordneter, nicht mehr referenzierbarer, persistenter Objekte
  freigegeben werden. Ein solches Verhalten setzt das Vorhandensein
  von schwachen Objektreferenzen im vorhandenen Objektspeicher
  voraus~\cite{HKJN93} und kann die Verwendung beliebiger
  Objektspeicher, die nicht über derartige Mechanismen verfügen,
  erschweren.
\item Jede Verwendung systemspezifischer Mechanismen vervielfacht den
  Aufwand für eine Portierung des Tycoon-System auf weitere
  Betriebssysteme.
\end{itemize}

Einen weiteren, noch offenen Aspekt stellt die Verbindung der im
Tycoon-System vorhandenen Transaktionsmechanismen mit nebenläufigen
Aktivitäten dar. Transaktionen betreffen stets die Gesamtheit aller
beteiligten Tycoon-Objekte. Eine feinere Granularität von
Transaktionen, die das Vorhandensein nebenläufiger Aktivitäten
berücksichtigt, erscheint wünschenswert.
%% voriger Satz ist blabla --> ändern
Alle im Zusammenhang mit der Verwendung von Mehrprozessorsystemen und
nebenläufigen Transaktionen gemachten Überlegungen sind keinesfalls
vollständig. Sie verdeutlichen vielmehr den nach wie vor vorhandenen
Bedarf an weiteren Forschungsarbeiten.

%Es stellt sich die Frage wie die Behandlung transaktionalen Verhaltens
%zusammen mit kooperativen nebenläufigen Aktivitäten zu behandeln ist.
%Einige Ansatzpunkte

% Local Variables:
% TeX-master: "da"
% TeX-parse-self: t
% TeX-auto-save: t
% End:

