AVS
Anwendung verteilter Systeme
Anwendung verteilter Systeme
-
- 1 / 123
-
Lernkarten
Versuchen Sie möglichst präzise den Begriff des Verteilten Systems zu definieren. Ist nach Ihrer Definition das Web ein Verteiltes System?
Vernetzte Komponenten innerhalb eines Netzwerks mit verschiedenen Hardware-Rechner realisiert
Beschreiben Sie die grundsätzliche Architektur eines Client-ServerSystems. Wann ist eine Komponente ein Client und wann ein Server?
Client = Software in der Rolle eines Anforderers einer Dienstleistung
Server = Software in der Rolle eines Erbringers einer Dienstleistung
Was wird eigentlich unter einer Komponente (in der Software) verstanden? Definieren Sie diesen Begriff in Hinblick auf Service und Benutzt-Relation.
Klassenkomplex mit einer explizit definierten Schnittstelle, an der eine in sich geschlossene Leistung erbracht wird und die eine weit gehend freie Kombinierbarkeit mit anderen Komponenten ermöglicht.
Was wird unter einer Benutzt-Relation verstanden?
Abhängigkeit von der Korrektheit, d.h. der korrekten Erbringung einer Dienstleistung an einer definierten Schnittstelle
Nennen Sie mindestens zwei wichtige Ziele, die mit dem Konzept der Komponenten realisiert werden sollen.
Große Unabhängigkeit und damit Eigenständigkeit
• Hoher Wiederverwendungsgrad
• Programmieren im Großen
• Basis Verteilter Systeme
Auf welche prinzipiellen Arten können Komponenten interagieren? Nennen Sie zwei Möglichkeiten.
Schnittstellen
Konnektoren
Erläutern Sie die Funktion der Middleware in Bezug auf die Komponententechnologie. Skizzieren Sie dabei, welche Aufgaben die Middleware hat.
(auch) Realisierung der Schnittstelle zwischen zwei oder mehreren Komponenten als Schicht eines verteilten Systems
Nennen Sie vier Beispiele für Implementierungen von Middleware.
DCOM, COM+, .NET
ODBC (Microsoft), JDBC (S
– JBOSS
Bei Corba gibt es eine IDL. Was ist das? Wofür steht das Kürzel IDL?
Abstrakte Sprache zur Technologie-unabhängigen Beschreibung von Schnittstellen
Interface Definition Language
Können Komponenten wie Klassen auch in Vererbungsbeziehungen stehen? Begründen Sie die Antwort.
Komponenten sollten in keiner Vererbungsbeziehung untereinander stehen (Corba erlaubt es aber z.B.). • Begründung: – Jede Vererbung öffnet eine Sicht auf eine konkrete Implementierung und verletzt damit das Prinzip der Kapselung. – Durch Vererbung entstehen stark gekoppelte Systeme, die nach längerer Weiterentwicklung nur noch schwer wartbar sind.
Bei der Beschreibung von Architekturen können Standpunkte eingenommen und aus deren Sicht etwas definiert werden. Erläutern Sie dieses Verfahren anhand eines Beispiels.
Ein Standpunkt ist eine konkrete Kombination von Aspekten, die durch die Interessen der Projektbeteiligten bestimmt ist.
Komponenten und Konnektoren-Standpunkt: Aufbau des Komponentensystems
• Laufzeitstandpunkt: Komponenten und Laufzeitumgebungen bzw. Sprachen
• Prozess-Standpunkt: Threads und Prozesse sowie Synchronisation
• Verteilungsstandpunkt: Wo welche Komponenten laufen
Was wird unter Persistenz einer Komponente verstanden?
Fähigkeit eines Programms/Software/Komponente ihren internen Zustand länger als die Lebenszeit des korrespondierenden Objekts im RAM zu erhalten
Komponenten werden meist innerhalb von Containern betrieben. Was ist das?
Laufzeitumgebung zum Management von Komponenten
Zwischen Container und Komponente liegt ein Management-Interface. Nennen Sie Beispiele von Operationen dieses Interfaces.
getter setter
Was wird unter eine Factory-Klasse verstanden?
Objekterzeugung durch Aufruf einer Methode
Wo sollten die Factory-Klassen zum Aufbau einer Komponente liegen? Im Container oder in der Komponente selbst?
im Container
Was sind (in Java z.B.) Annotations?
Die Programmiersprache Java stellt mit Javadoc und den Annotationen zwei Mechanismen zum Einbinden von Metadaten zur Verfügung. Diese werden insbesondere im J2EE-Umfeld eingesetzt, um verschiedene Dateien automatisiert zu erzeugen. Dazu zählen beispielsweise SQL-Dateien, Deployment-Deskriptoren und die mit Enterprise Java Beansverbundenen Schnittstellen (Remote Interface, Home Interface, ...).
Ist Parallelität innerhalb einer Komponente sinnvoll? Nennen Sie dazu ein gutes Beispiel.
Ja
CSCW, VideoKonferenzen, WFMS
Der Container kann in einen Upper und einen Lower Layer aufgeteilt werden. Nennen Sie jeweils Beispiele für Funktionen dieser Schichten.
upper layer: Laden, Starten, Stoppen • Entladen • Wiederanlauf
lower layer: Kommunikation • Betriebssystem
Welche drei Arten von Beziehungen können zwei Komponenten haben?
Zwischen Threads • Zwischen Prozessen • Zwischen Systemen
Ein Container hat viele Aufgaben, erläutern Sie die folgenden: Authentifizierung, Permission, Time, Mover
Auth: Authentifizierung (Prüfung der Identität)
Permission: Vergabe von Rechten (Autorisierung)
Time: Abstimmung der Uhren
File: Austausch von Dateien •
Transport: Schnittstelle zum Kommunikationssystem
Welche drei Funktionen hat der Booter innerhalb der Container?
Hoch- und Herunterfahren der Anwendung, Migration
Wenn Sie eine verteilte Applikation abstrakt, also implementierungsunabhängig beschreiben wollen, was benötigen Sie dazu? IDL/CDL, ADD oder CDD?
CDD
Was ist ein Prozess und was ein Thread? Und was wird in dieser Lehrveranstaltung unter einer Task verstanden?
Prozess = Sequentiell ablaufendes Programm
• Thread = Faden = Coroutine = Light weight Process = Eigenständiges sequentiell ablaufendes Programmstück als Teil eines Prozesses
Der zusammenfassende Oberbegriff von Thread und Prozess soll hier Task heißen (mit einer Tasktabelle)
Was ist ein kritischer Abschnitt? Gibt es zwei gleiche kritische Abschnitte? Wodurch können kritische Abschnitte mit einander verbunden sein?
Kritischer Abschnitt = Bereich im Code, bei dessen Ausführung Probleme mit anderen Threads auftreten können
Variablen, Platten
Alle kritischen Abschnitte, die sich auf dieselbe Menge von Betriebsmitteln beziehen, werden zu einer Klasse zusammen gefasst.
Was bedeutet bei kritischen Abschnitten eine Klasse? Müssen kritische Abschnitte derselben oder anderer Klassen koordiniert werden?
Wenn an mehreren Stellen auf dieselben Variablen aus verschiedenen Threads zugegriffen wird, so bilden alle diese Stellen jeweils kritische Abschnitte derselben Klasse. • Alle kritischen Abschnitte einer Klasse müssen untereinander abgestimmt werden. • Kritische Abschnitte verschiedener Klassen brauchen nicht koordiniert zu werden.
Was ist ein Deadlock? Nennen Sie dazu ein Beispiel. Was wird unter Starvation verstanden?
Warten auf ein Ereignis, das nicht eintreten kann, da die das Ereignis signalisierenden Vorgänge auf eine Aktivität eines Tasks warten, der selbst auf das Ereignis wartet.
You-after-you-Problem – Verkehrskreuzung mit vier Autos
Starvation = Zu langes Warten auf ein mögliches Ereignis als Folge übermäßiger "Ungerechtigkeit" zwischen Tasks
Beschreiben Sie das Szenario der Spaghetti essenden (und auch denkenden) Philosophen. Konstruieren Sie eine Deadlock-Situation und eine Situatuion, bei der Starvation entsteht.
Ein Philosoph isst entweder Spaghetti oder er denkt. Essen und Denken müssen sich abwechseln und nicht zu lange dauern (in beiden Fällen drohen sonst gesundheitliche Schäden). • Philosophen benötigen zum Essen zwei Gabeln (Erziehung). • Bestimmte Algorithmen der Philosophen führen zu Deadlocks, andere zu Starvation, andere sind vollkommen korrekt.
Folgendes Verfahren führt zum Deadlock: – Jeder nimmt die Gabel rechts – Jeder wartet auf die Gabel links • Folgendes Verfahren führt zum Verhungern (Starvation): – Jeder nimmt die Gabel rechts – Wenn die fehlende Gabel nicht verfügbar ist, legt er die rechte Gabel zurück. – Es beginnt von vorn
Beschreiben Sie eine durchaus reale Situation im Straßenverkehr, in der ein Deadlock entsteht.
Verkehrskreuzung mit vier Autos
Welche Aufgaben haben die beiden abstrakten Operationen enter() und leave() (wie sie in der Veranstaltung eingeführt wurden)?
lock() und unlock()
Welche drei prinzipiellen Arten der Interprozess-Kommunikation werden in der Praxis benutzt? Schildern Sie deren Funktionsweise.
speicherbasiert :Shared Memory
strombasiert:Pipe Named Pipe, Sockets
nachrichtenbasiert : Messages, Signale Exceptions
Zwei Threads im selben Prozess wollen miteinander kommunizieren. Welche der drei Arten von Interprozess-Kommunikation ist am schnellsten und auch meist am sinnvollsten?
speicherbasiert
Mit welcher Hardware-Komponente wird die Interprozess-Kommunikation mit der Benutzung gemeinsamen RAMs zwischen Prozessen realisiert?
MMU
Neben den binären Semaphoren gibt es noch die Integer-Semaphoren. Wodurch unterscheiden diese sich von den binären?
Die eine Semaphore (empty) zählt die freien Bereiche, die andere die belegten Bereiche.
Definieren Sie den Remote Procedure Call als Gegensatz zum Local Procedure Call.
Local Procedure Call = Sprung in eine Routine desselben virtuellen Speichers (VM)
Remote Procedure Call (RPC) = wie Local Procedure Call, nur dass die Routine in einem anderen virtuellen Speicher liegt als der Aufrufer
Können zwei Threads mit einem Remote Procedure Call miteinander kommunizieren? Bedingungen dafür?
werden auf gleichem Betriebssystem ausgeführt
Mit welchen besonderen Problemen muss sich die Implementierung des Remote Procedure Calls im Gegensatz zum lokalen Prozeduraufruf beschäftigen? Nennen Sie zwei.
Sendequeue ist voll
Empfangsqueue ist voll
Warum kann beim Remote Procedure Call in jedem Falle vom Client und vom Server gesprochen werden? Dagegen werden beim einfachen Nachrichtenaustausch nur Daten zwischen Gleichberechtigten ausgetauscht.
Ergebnis der Nachricht wird zurückgesendet
Was macht die reply()-Operation anders als die send()-Operation?
Antwort auf den Empfang mit Bezug auf das Empfangene
Beschreiben Sie das Send-and-Wait-Protokoll. Sind bei diesem Protokoll Deadlocks möglich?
der Sender nach einem Senden immer auf die Bestätigung durch den Empfänger wartet,
nein