Verteilte Systeme Flashcards
Welche Kommunikationsarten besitzen Prozesse?
Synchrone Kommunikation
Asynchrone Kommunikation
Was bedeutet Synchrone Kommunikation?
Nenne 2 Beispiele
Beide Prozesse müssen zueinander Passende Programmstellen erreicht haben. Gegebenenfalls muss ein Prozess warten.
Beispiele:
Entfernter Prozedur- bzw. Methodenaufruf
Spezielle Kommunikationskonstrukte z.B. Entries in Ada
Was bedeutet asynchrone Kommunikation?
Nenne zwei Beispiele.
Prozesse führen Aktionen zur Kommunikation aus und arbeiten danach weiter, ohne auf Antwort zu warten.
Beispiele:
Kommunikation über gemeinsamen Speicher
Kommunikation über Nachrichten
Im Internet werden Daten in Paketen endlicher Länge übertragen, während zur Kommunikation zwischen Prozessen jedoch häufig ein kontinuierlicher Datenstrom angemessener ist. Welches Konzept bietet eine Abstraktion von den technischen Verwaltungsaufgaben in der Kommunikation über das Netzwerk, sodass diese Diskrepanz überwunden wird?
(vgl. Kapitel 7.2.1 im Kurstext) Durch Sockets, die im Rahmen von Berkeley Unix entwickelt wurden, wird eine Abstraktionsschicht zur Kommunikation zwischen Prozessen bereitgestellt, die den Programmierer von folgenden Aufgaben befreit:
Im Internet werden Daten in Paketen endlicher Länge übertragen, während zur Kommunikation zwischen Prozessen jedoch häufig ein kontinuierlicher Datenstrom angemessener ist. Welches Konzept bietet eine Abstraktion von den technischen Verwaltungsaufgaben in der Kommunikation über das Netzwerk, sodass diese Diskrepanz überwunden wird?
Welche Tätigkeiten fallen hier an?
Zerteilen der Daten in Pakete;
Verpacken der Daten in Pakete mit Adress- und Verwaltungsinformationen sowie dem Dateninhalt
Auspacken der ankommenden Pakete (insbes. Entfernen der Adress- und Verwaltungsinformationen);
Ordnen der Pakete in der richtigen Reihenfolge;
Anfordern von fehlenden (im unzuverlässigen Internet ggf. verloren gegangenen) Paketen;
Zusammensetzen der Daten zu einem kontinuierlichen Datenstrom.
Der Kurstext nennt vier verschiedene Kommunikationsmittel für verteilte Systeme, wovon zwei primär zur asynchronen und zwei primär zur synchronen Kommunikation eingesetzt werden. Nennen Sie diese und ordnen Sie sie der asynchronen bzw. synchronen Kommunikation zu.
Asynchrone Kommunikation:
• Kommunikation über gemeinsamen Speicher
• Kommunikation über Nachrichten
Synchrone Kommunikation:
• Entfernter Prozedur- bzw. Methodenaufruf
• Spezielle Kommunikationskonstrukte
Nennen Sie zwei Gründe, warum sich das objektorientierte Grundmodell besonders gut für die Programmierung verteilter Systeme eignet.
- Objekte fassen Daten und Operationen zu Einheiten mit klar definierten Schnittstellen zusammen; Objekte bzw. Klassen bilden demnach weitgehend unabhängige Programmteile, die sich auf verschiedene Prozesse bzw. Rechner verteilen lassen.
- Kommunikation zwischen Objekten über Nachrichten ist integraler Bestandteil des objektorientierten Grundmodells, sodass bereits alle wesentlichen Sprachmittel für die Kommunikation im Rahmen verteilter Systeme zur Verfügung stehen.
Welche Kommunikationsarten von Prozessen kennen Sie? Was zeichnet sie jeweils aus?
Eine synchrone Kommunikation zweier Prozesse kann nur dann stattfinden, wenn beide Prozesse zueinander passende Programmstellen erreicht haben. Gegebenenfalls muss der eine Prozess zunächst auf den anderen warten.
Bei asynchroner Kommunikation führen die Prozesse die Aktionen zur Kommunikation aus und arbeiten danach weiter, ohne auf eine Antwort zu warten
Nennen Sie vier Kommunikationsmittel und ordnen Sie sie den Kommunikationsarten von oben zu.
Kommunikationsmittel zur asynchronen Kommunikation:
Kommunikation über gemeinsamen Speicher
Kommunikation über Nachrichten
Kommunikationsmittel zur synchronen Kommunikation:
Entfernter Prozedur- bzw. Methodenaufruf
Spezielle Kommunikationskonstrukte (z.B. Entries in der Sprache Ada)
Wahr oder Falsch
Bei einem verteilten System handelt es sich um eine Menge von Prozessen, die in einem gemeinsamen Adressraum Berechnungen durchführen.
Falsch
Wahr oder Falsch
Unter synchroner Kommunikation versteht man den gleichzeitigen Versand von Nachrichten durch zwei unabhängige Prozesse
Falsch
Wahr oder Falsch
Unter asynchroner Kommunikation versteht man den Versand einer Nachricht und das unmittelbare Fortfahren der eigenen Berechnungen, ohne auf eine Reaktion des Empfängers zu warten.
Wahr
Wahr oder Falsch
Da Objekte Daten und Operationen vereinen, sind sie für eine Verteilung über verschiedene Systeme gut geeignet.
Wahr
Wahr oder Falsch
Bei einem Port handelt es sich um einen Rechner im Netzwerk
Falsch
Wahr oder Falsch
Ein Server sollte in nur einem einzigen Thread implementiert werden, um Verklemmungen zu vermeiden.
Falsch
Wahr oder Falsch
Bei RMI handelt es sich um einen Mechanismus, der es erlaubt, Methoden von Objekten aufzurufen, die auf einem anderen Rechner zur Verfügung gestellt werden.
Wahr
Wahr oder Falsch
In Java werden bei einem entfernten Methodenaufruf durch aktuelle Parameter referenzierte Objekte vom Rechner des aufrufenden Objektes zum Rechner des aufgerufenen Objektes verschoben.
Falsch
Wahr oder Falsch
In Java repräsentiert ein Skeleton-Objekt ein aufrufendes Objekt auf der Seite des aufgerufenen Objektes.
Wahr
Wahr oder Falsch
In Java reicht es aus, den RMI-URL zu kennen, um auf dem so identifizierten entfernten Objekt eine Methode aufzurufen.
Falsch
Wahr oder Falsch
In Java reicht es aus, den RMI-URL zu kennen, um auf dem so identifizierten entfernten Objekt eine Methode aufzurufen.
Falsch
Erzeugen eines Sockets
java. net.ServerSocket serverSocket = new java.net.ServerSocket(port);
java. net.Socket socket = new java.net.Socket(ip,port);
Server - Aktzeptieren einer Anfrage
java.net.Socket socket = serverSocket.accept(); // blockiert, bis sich ein Client angemeldet hat
Lesen / Schreiben aus / in einen Socket
socket.getOutputStream().write(“Hallo!”.getBytes());
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
Schließen eines Sockets
socket.close();
Was wird im Kurs 1618 unter einem Verteilten System verstanden?
Kriterien verteilter Systeme:
Eine Menge von lose gekoppelten Prozessen d.h. von Prozessen, die unabhängig voneinander Berechnungen ausführen und miteinander kommunizieren können.
Jeder Prozess arbeitet dabei ein eigenes Programm in einem eigenen Adressraum ab.
Insbesondere arbeiten die Prozesse im Allgemeinen parallel.
Typischerweise sind verteilte Systeme räumlich, d.h. auf mehrere Rechner verteilt.
Sockets bilden eine Abstraktionsschicht zur Kommunikation zwischen verteilten Prozessen, die den Programmierer von einigen nicht trivialen Tätigkeiten befreit. Welche Tätigkeiten sind das?
Zerteilen der Daten
Einpacken der Daten in Pakete mit Adressinformation, Verwaltungsinformation und Paketinhalt
Auspacken der eintreffenden Pakete
Reihenfolge der eintreffenden Pakete sicherstellen
fehlende Pakete nachfordern
Pakete am Zielort wieder zusammensetzen.
Wie sieht das grundlegende Muster zur Realisierung eines einfachen Servers aus? Geben Sie das passende Programmfragment (Pseudocode oder Java) an oder beschreiben Sie das Muster textuell.
ServerSocket serversocket = new ServerSocket(Portnummer); while (true) { // Öffnen der Ein- und Ausgabeströme zum Client Socket socket = serversocket.accept(); // Kommunikation zwischen Server und Client socket.close(); }
Textuelle Beschreibung des Musters:
Der Server-Prozess schließt sich an den gewünschten Port an. Dies geschieht in Java mittels des Konstruktors der Klasse ServerSocket. Dann betritt er üblicherweise eine Endlosschleife. Jeder Durchlauf durch die Schleife entspricht der Bedienung eines Clients. In der Schleife wartet der Server, dass sich ein Client an den Port anschließt. Das Warten und das nachfolgende Herstellen der Socket-Verbindung zum Client wird in Java von der Methode accept geleistet. Ihr Aufruf blockiert, bis sich ein Client angeschlossen hat, und liefert dann das Socket-Objekt zurück, das die Verbindung zum Client repräsentiert. Das Socket-Objekt stellt Methoden zur Verfügung, um die Ein- und Ausgabeströme zum Client zu öffnen.