UNIVERSITÄT ULM Fakultät für Informatik Verteilte Systeme Prof. Dr. Peter Schulthess Ralph Göckelmann Stefan Frenz Lösung zur 3. Übung Verteilte Betriebssysteme Aufgabe 1: Remote Method Invocation a) Schreiben Sie ein RMI-Serverprogramm, welches eine beliebig lange Zahlenfolge sortiert. Die Zahlenfolge soll in einem Integer-Array abgelegt sein. Sie können zu Testzwecken eine feste Zahlenfolge im Klienten verwenden. Der Sortieralgorithmus kann frei gewählt werden (z.B. BubbleSort oder QuickSort). b) Warum ist bei RMI keine zusätzliche IDL-Datei notwendig? Java ist eine typsichere Sprache. Eine zusätzliche Typisierung durch eine IDL kann entfallen. Aufgabe 2: Serialisierung a) Schreiben Sie ein RMI-Serverprogramm, welches den Klienten eine Methode void dumpTree (Tree root) anbietet, mit der ein im Parameter Tree übergebener Binärbaum am Bildschirm ausgegeben wird. Schreiben Sie einen Klienten und testen Sie ihren Server, indem Sie zufällig einen Binärbaum erzeugen und dessen Wurzel als Parameter an den Server übergeben. b) Erweitern Sie ihren Klienten und verfolgen Sie die Serialisierung des übergebenen Baumes. Für die Serielisierung von Java-Objekten wird die Methode writeObject gerufen. Überschreiben Sie diese geerbte Methode und geben Sie zunächst den Namen/Inhalt des Knoten aus. Rufen Sie anschließend die DefaultRoutine defaultWriteObject um die Serialisierung durchzuführen. Aufgabe 3: RPC a) Beschreiben und bewerten Sie den Remote Procedure Call (Vorteile gegenüber einfacheren Kommunikationsdiensten und generelle Probleme). + durch RPC können nicht nur Nachrichten versendet sondern auch Dienste auf anderen Rechnern gestartet werden + Parameter müssen nicht von Hand verpackt und entpackt werden, wie beispielsweise bei Kommunikation mit X-Server (Æ Interface durch Beschreibungssprache IDL def.) +Aufruf einer entfernten Fkt. sieht für den Programmierer aus, wie der Aufruf einer lokalen Fkt. aus +Referenzen auf komplexe Strukturen können einfacher gehandhabt werden, als mit Sockets - Netzwerk kann zusammenbrechen - Netzwerk überlastet - Referenzen können u.U. großen Datentransfer verursachen - IDL kompliziert durch nicht typsichere Sprache C (besser z.B. Java) b) Was steht in den Dateien IDL und ACF? ACF = Application Configuration File Beschreibt Attribute die nur das lokale System betreffen, nicht den Netzwerktransfer. Sie wird verwendet, um Details fuer den zu generierenden Stubcode zu definieren. Inhalt: min. Interface-Handle (genügt meistens) IDL = Interface Definition Language Interface-Header: UUID, Versionsnummer (optional: Defaultattribut für nicht-attributierte Pointer) Interface: Interfacebeschreibung - spezifiziert die Schnittstelle der Remote-Prozeduren auf Server (kein Objekt Æ nur Fkt.) - beschreibt, was zwischen Klient und Server übertragen wird Æ Zeiger besonders kritisch UUID = Universal Unique Identifier Eindeutige Identifikation eines RPC Interfaces, generiert mit guidgen.exe. Dieses Hilfsprogramm erzeugt eine eindeutige Nummer (Netzwerkadapteradresse, Zeit, ...).