AVS

Anwendung verteilter Systeme

Anwendung verteilter Systeme


B. M.
Diese Lernkarten behandeln fortgeschrittene Konzepte der Informatik auf Universitätsniveau, mit Fokus auf REST, Authentifizierung und Ressourcenmanagement. Sie decken Themen wie HTTP-Methoden, Idempotenz, Sicherheit und Zugriffskontrollen ab, einschließlich der Verwendung von Tickets und Capabilities. Praktische Beispiele und Verfahren wie Kerberos, RESTful APIs und sichere Authentifizierungsmethoden werden erklärt. Ideal für Studierende und IT-Profis, die ihr Verständnis von Netzwerkprotokollen und Sicherheit vertiefen möchten.
Cartes-fiches
123
Utilisateurs
2
Langue
Allemand
Catégorie
Informatique
Niveau
Université
Créé / Mis à jour
20.09.2016 / 19.01.2017

Lernkarten

Kann das Send-and-Wait-Protokoll alle Arten von Paket-Verlusten feststellen und erfolgreich behandeln? Falls nicht, was bedeutet dies für Verteilte Applikationen? 

Verluste und Duplizierung von Nachrichten

Welche Möglichkeiten der Behandlung bestehen, wenn der Verlust eines send()-Requests auftritt? Welche Arten von RPC-Semantik können prinzipiell realisiert werden?

Exception werfen

Stub

Die Möglichkeit von Dubletten von Paketen kann dazu führen, dass modifizierende Operationen doppelt ausgeführt werden. Wie lässt sich dies verhindern? 

Kompensationstransaktion

Aufgrund von Ausfällen von Systemen kann es beim RPC zu Waisen kommen. Was ist ein Waise? Und wie entsteht ein solcher?

Waise = Klient, der am Ergebnis einer Operation, hier RPC, keine Interesse hat oder vorher terminiert

Beschreiben Sie ein Verfahren zur Waisenbehandlung mittels Epochen. Was ist eine Epoche?

 Eine Epoche ist ein Zeitabschnitt mit sequentiell nummerierten Teilabschnitten.

 

Broadcast an alle Beteiligten – Terminieren und Neustart aller Teilnehmer

Mit traditionellen Transaktionen können alle Effekte mittels rollback() zurückgenommen werden. Was ist erforderlich, wenn ein commit() durchgeführt wurde und die Effekte anschließend zurückgenommen werden sollen?

Kompensationstransaktion

Welche Aufgaben hat der Stub beim Remote Procedure Call? Nennen Sie mindestens zwei.

Serialisieren

Deserialisieren

Aus welchen Gründen müssen die Parameter des Remote Procedure Calls auf der Senderseite serialisiert und auf der Empfängerseite deserialisiert werden? 

Wiederherstellung der semantisch gleichen Repräsentation

Gilt der Zwang zur Serialisierung/Deserialisierung auch für die Resultate von Funktionen?

Zwang gilt für:

Die Liste der Parameter •

Die (Liste der) Resultate •

Exception-Information

Wenn ein Remote Procedure Call eine Funktion aufruft, was muss alles beim Rücktransport der Informationen zum Aufrufer berücksichtigt und daher auch übertragen werden? 

Die Liste der Parameter • Die (Liste der) Resultate • Exception-Information

Wenn verkettete Strukturen, z.B. Objekte vom Typ List<> in Java, serialisiert werden, muss ein bestimmtes nicht einfach zu lösendes Problem gelöst werden, welches?

Alle referenzierten Objekte müssen mit serialisiert werden. – Aber wie weit muss das gehen? Liste von Objekten: die ganze Liste?

Wie können Referenzen mit Pointern serialisiert werden? Beschreiben Sie drei Vorgehensweisen und bestimmen Sie deren Vor- und Nachteile.

1) Einfach verbieten Nachteil: wird häufig gebraucht, z.B. Output-Parameter read(…) 2) Alle referenzierten Objekte müssen mit serialisiert werden. – Aber wie weit muss das gehen? Liste von Objekten: die ganze Liste? 3) Alle referenzierten Objekte müssen lokal verfügbar sein, d.h. die Objekte müssen zwischen Knoten verschiebbar sein und zum Ort, an dem die Routine arbeitet, hin wandern.

Wie sieht die grundsätzliche Software-Struktur auf der Seite des Aufgerufenen, also des Servers, aus? 

Proc ProcessCall

daten empfangen

daten deserialisieren

daten verarbeiten

daten serialisieren

daten zurückgeben

Auf der Server-Seite befindet sich eine Endlos-Schleife, die alle Requests abarbeitet und sonst nichts tut.

Beschreiben Sie die typische Speicheraufteilung eines laufenden Prozesses bzw. Programms.

Stack

Frei 

Heap

.Was wird unter Reflexion (Englisch: reflection) bei Programmiersprachen verstanden? 

Reflexion = Möglichkeit, die eigenen Programmstrukturen zur Laufzeit selbst zu analysieren und zu benutzen

Die Routine reflection(Name) durchsucht die Symboltabellen zur Laufzeit nach dem Namen der Routine und liefert deren Adresse bzw. Null.

Wie wird bei Java und anderen per Compiler übersetzten Sprachen Reflexion prinzipiell realisiert?

Die Symboltabellen beinhalten die Zuordnung zwischen dem Namen zur Compile-Zeit und der Adresse im Code.

Wie wird bei Skript-Sprachen wie z.B. JavaScript oder PHP Reflexion prinzipiell intern - also nicht auf der Ebene der Sprachkonstrukte - realisiert? 

In PHP kann über eine Variablen mit dem Inhalt des Namens der Routine indirekt eine Routine aufgerufen werden.

 

$

Beschreiben Sie den Prozess des Bindens von Programmen durch einen Linker (Linkage Editor oder Binder).

Der Lader und der Linker sind als parallel laufende Threads realisiert. – Der Lader liest die externe Datei ein. – Der Linker aktualisiert die Tabellen und bestimmt, welche Datei aus welcher Bibliothek geladen werden soll. – (So in etwa ist es in Java realisiert: Classloader)

Wodurch unterscheidet sich ein Linker (Linkage Editor oder Binder) von einem Lader (Loader)?

– Der Lader liest die externe Datei ein. – Der Linker aktualisiert die Tabellen und bestimmt, welche Datei aus welcher Bibliothek geladen werden soll.

Was bedeutet technisch, wenn von einem nicht-wartenden send() oder receive() gesprochen wird? Welche Konsequenzen hat das „Nicht Warten“?

Ein Thread wartet stattdessen auf die Ergebnisse

Welche Reaktionen erscheinen sinnvoll, wenn beim nicht-wartenden send() festgestellt wird, dass die erforderliche Sende-Queue im eigenen System voll ist und daher das send() nicht ausgeführt werden kann? 

das send() wartet auf freien Speicher via Thread

Wozu dienen Thread-Pools? Warum werden sie benutzt?

Es wird vorher ein Threadpool angelegt, so dass nur bei Überlast neue Threads erzeugt werden. Ein Thread geht nach getaner Arbeit in den Threadpool (Wartezustand) und wird für neue Arbeit aktiviert.

Auf dem Server sollen möglichst parallel viele RPCs bzw. Nachrichten verarbeitet werden. Wie sieht eine dafür geeignete Software-Struktur aus? 

Treten bei wartenden (klassischen) RPCs Probleme des wechselseiitigen Ausschlusses innerhalb einer Anwendung auf? 

NEIN

Was muss bei der Benutzung mehrfacher asynchroner send()-Operationen innerhalb einer verteilten Anwendung beachtet werden? 

Die Daten der Anwendungen müssen getrennt werden.

Beim Starten/Hochfahren eines verteilten Systems müssen die beteiligten Komponenten erzeugt werden. Wie kann dies realisiert werden? Machen Sie dazu einen Vorschlag. 

Dynamisches Erzeugen

Erzeugen durch einen Konstruktor/Booter

Wenn unter einer Komponente das Äquivalent einer Klasse verstanden wird, was wäre dann bei den Komponenten eine Instanz? 

Session

Warum sollten alle laufenden Anwendungen jeweils eine eindeutige ID besitzen? Was kann anhand dieser ID bestimmt werden? 

Session

Auf einem Server liegt die Implementierung einer Komponente sowie z.B. zwei Instanziierungen dieser Komponente. Nun wird eine Nachricht empfangen und muss der „Komponente“ zugeordnet werden. Beschreiben Sie dazu den prinzipiellen Algorithmus.

Anhand der ID der Anwendung wird die Nachricht einer Instanz (Objekt) auf einem Server zugeordnet 

Besteht eine laufende verteilte Anwendung aus Komponenten oder aus den Instanzen der beteiligten Komponenten?

Instanzen

Wie kommen in einem Verteilten System Deadlocks zustande? Konstruieren Sie dazu ein Beispiel.

.Nennen Sie mindestens zwei Gründe, warum jeder RPC-Aufruf eine eindeutige Nummer haben sollte.

Jede Instanz muss explizit hochgefahren (gebootet) werden. • Jede Instanz muss explizit heruntergefahren (shutdown) werden.

Bei den Namensdiensten wird häufig zwischen Adressen und Namen unterschieden. Worin liegen die Unterschiede? Definieren Sie beide.

Adresse = Identifikation eines Ortes und auch eines Objektes an diesem Ort Beispiele: IP-Adresse, RAM-Adresse •

Name = Symbolische Identifikation eines Objektes unabhängig vom Ort Beispiele: www.htw-berlin.de, [email protected], readme.txt

Was unterscheidet einen Namen für einen Dienst von einem Namen von einem Server?

Ein Dienstname kann als Abstraktion von Namen von Servern angesehen werden, denn unterschiedliche Server können denselben Dienst anbieten.

Welche Aufgaben hat ein Namensdienst (Name Service, Directory Service)? Nennen Sie dazu drei typische Operationen. 

register() , unregister() ,query()

In der Datenbank eines Namensdienstes werden verschiedene Informationen gespeichert. Nennen Sie dafür drei Beispiele. 

Adresse – hier IP-Adresse

• Name – hier Name des Dienstes

• Weitere Informationen (Attribute), z.B. – Art des Dienstes – Kosten – Öffentlich, beschränkter Zugang – Passwörter

Wenn zwei Klienten sich innerhalb eines Netzwerks finden wollen: was müssen sie dazu tun, wenn sie ohne Broadcast-Operationen auskommen wollen? 

Mit der abstrakten Operation query() wird im Informations-bestand des Namensservers gesucht. 

Wofür steht das Kürzel DNS? Was ist die wichtigste Aufgabe des DNS-Dienstes? 

Domain Name Service (DNS)

Umsetzung einer symbolischen Adresse nach IP

– Umsetzung einer IP-Adresse zur symbolischen

– Vermerken der Adressen von E-Mail-Servern –

Vermerken von Informationen über Stationen

– Vermerken der Adressen anderer DNS-Server

Was ist eine Top-Level-Domain? Was ist eine Domain?

Alte Top-Level-Domains:

.com Unternehmen

.net Netzwerkbetreiber

.org Organisationen

Domain:Adressbereich

 

 

Wieviele Subdomains kann eine Domain besitzen? 

unbegrenzt

Étudier