Architektur verteilter Systeme

Architektur verteilter Systeme - HTW Berlin - Wirtschaftsinformatik - Messer

Architektur verteilter Systeme - HTW Berlin - Wirtschaftsinformatik - Messer


C. G.
Diese Lernkarten behandeln auf Universitätsniveau die Architektur verteilter Systeme, mit Fokus auf Threads, Prozesse, Monitore, Semaphoren und Synchronisation. Sie erklären, wie kritische Abschnitte geschützt werden, wie Deadlocks und Starvation entstehen und wie Ressourcen effizient genutzt werden. Entwickler und Informatikstudenten profitieren davon, um komplexe Systeme zu verstehen und zu optimieren.
Cartes-fiches
34
Utilisateurs
9
Langue
Allemand
Catégorie
Informatique
Niveau
Université
Créé / Mis à jour
20.09.2015 / 04.02.2025

Flashcards

Was wird unter einer Komponente (in der Software) verstanden?

Definieren Sie diesen Begriff in Hinblick auf Service und Benutzt-Relation.

Komponente
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.

--------------------

Service
Erbringung einer in sich geschlossene Leistung, d.h. Realisierung einer Aufgabe

Beziehungen zwischen Komponenten
- Benutzt-Relation im Sinne von local bzw. remote procedure call
- Benutzt-Relation im Sinne von Nachrichtenverarbeitung
- Management-Relation: Erzeugen/Laden, Vernichten, Ersetzen, (Um-)Konfigurieren
 

 

Welches Ziel wird mit dem Standard des OSI-Referenzmodells verfolgt?
Wie viele Schichten definiert das OSI-Referenzmodell? Und wie heißen diese?

Ziel:

Hersteller unabhängige, Architektur unabhängige sowie Netz unabhängige Schnittstelle zwischen beliebigen Rechnern

Konzeptioneller Rahmen

Das Basis Referenzmodell legt einen Bezug (Reference) fest, der gerade so gestaltet ist, dass mit so wenigen Vorgaben wie nur möglich ein Maximum an Kompatibilität erreicht wird

Behandlung des Aspektes der Datenübermittlung, d.h. es geht nicht um die Verarbeitung, sondern nur um den Datenaustausch
 

Anzahl Schichten:  7


Schichten:

Anwendung
Darstellung
Steuerung
Transport
Vermittlung
Sicherung
Übertragung

Was wird unter einem Dienst (Service) verstanden?
 

An der Schnittstelle zwischen direkt benachbarten Schichten erbrachte Leistung der unteren Schicht durch Ausführen geeigneter Protokolle.

Ein Dienst kann auch als Angabe, was zu leisten ist, verstanden werden, während das Protokoll angibt, wie dieses Was realisiert wird.

Ein Dienst ist damit die Spezifikation der Leistung eines Protokolls.

Daher kann es mehrere Protokolle geben, die dieselbe Leistung erbringen, d.h. denselben Dienst realisieren.

Was ist eine Instanz (Entity)? Was wird dadurch modelliert?

Modell der Implementierung einer Komponente

Modell eines aktiven kommunizierenden Elements innerhalb einer Schicht und gleichzeitig innerhalb eines Systems

Entities können in Hardware, z. B. LAN-Karten, oder in Software, z. B. als Threads im Kernel oder als Prozesse, realisiert werden.

An welchen Schnittstellen des OSI-Modells werden Dienste
und an welchen Protokolle definiert?

Dienste:

an der Schnittstelle zwischen direkt benachbarten Schichten

 

Protokolle: 

an der Schnittstelle zwischen Instanzen verschiedener Systeme derselben Schicht

Was ist eine PDU?

Wofür steht dieses Kürzel?

PDU = Protocol Data Units

Bei Ausführen von Protokollen werden über die nächst unterliegende Schicht Einheiten von Daten ausgetauscht (=PDUs)

Was ist die Aufgabe der Sicherungsschicht (Link Layer)?

Segmentierung der Pakete in Frames und Hinzufügen von Prüfsummen

 

[Die Sicherungsschicht sorgt für eine zuverlässige und funktionierende Verbindung zwischen Endgerät und Übertragungsmedium. Zur Vermeidung von Übertragungsfehlern und Datenverlust enthält diese Schicht           Funktionen zur Fehlererkennung, Fehlerbehebung und Datenflusskontrolle.

Auf dieser Schicht findet auch die physikalische Adressierung von Datenpaketen statt.]

Geben Sie drei Beispiele für Dienste/Aktivitäten auf der Anwendungsschicht an (Application Layer).

Aufgabe:
Funktionen für Anwendungen, sowie die Dateneingabe und -ausgabe


Beispiele: ???

.

Worin bestehen die wesentlichen Aufgaben der Präsentationsschicht (Presentation Layer)?

Umwandlung der systemabhängigen Daten in ein unabhängiges Format

Darstellungsschicht wandelt die Daten in verschiedene Codecs und Formate/
Hier werden die Daten zu oder von der Anwendungsschicht in ein geeignetes Format umgewandelt.

Was ist ein Prozess und was ein Thread?

Prozess

Sequentiell ablaufendes Programm

 

Thread

Sequentiell arbeitendes Programm(teil) als Teil eines Prozesses

Was ist bei Prozessen bzw. Threads ein Scheduler?

Thread, der die Zuteilung der CPU zu den Threads nach einem Verfahren (Scheduling Strategie) realisiert

Welche Aufgaben hat der Scheduler?

- in der Threadtabelle mitschreiben, welche Threads existieren

- vermerken, welcher Thread zu welchem Anteil die CPU schon bekommen hat

- vermerken des Thread-Zustandes (state):

- ändern des Threadzustands entsprechend einer neuen Situation

- zuteilen der CPU dem nächsten Thread

Welche Aufgaben hat der Timer bei dem Time-Sharing-Verfahren?

 Ein Timer ist ein spezielles Gerät, das nach einer eingestellten Zeit bzw. in zyklischen Abständen einen Interrupt sendet. Dieser wird immer mit dem Aktivieren des Schedulers behandelt.

Was ist eine Zeitscheibe?

 Dauer zwischen zwei Timer-Interrupts

 Welche Informationen stehen in der Thread-/Prozess-/Task-Tabelle?

Informationen zu jedem Thread:m

Identifikation,

Datensegment,

Zustand

Beschreibe das Time-Sharing-Verfahren.

In der Prozessortechnik handelt es sich um eine Ablaufplanungsstrategie, bei der mehreren Prozessen zeitgleich Prozessorleistung zur Verfügung gestellt wird.
Dabei wird den einzelnen Prozessen, abhängig von dem Scheduling für eine bestimmte Zeit Prozessorleistung zur Verfügung gestellt.

Nach der Abarbeitung der Programme oder Teilprogramme werden die Prozesse unterbrochen und der Prozessor arbeitet den nächsten Prozess ab. Die Größenordnung der einzelnen Zeitscheiben liegt bei einigen tausendstel Sekunden.
Bei jeder Unterbrechung werden die Zwischenergebnisse abgespeichert und bei der nächsten Zeitscheibe wieder aufgenommen. Dadurch entsteht der Eindruck, der Computerarbeite gleichzeitig an allen Programmen.
Ein- und Ausgabeoperationen der einzelnen Benutzer sind zwischenzeitlich jederzeit möglich.

Prozesse haben aus der Sicht der Schedulers Zustände.
Nenne mindestens zwei und beschreiben, was sie bedeuten.

Running:
Thread hat gerade die CPU

Ready:
Thread wartet auf CPU

Waiting:     
Thread wartet auf Beendigung von I/O

Sleeping:  
Thread benötigt irgendwann später die CPU,

Was ist ein kritischer Abschnitt?

Gibt es zwei gleiche kritische Abschnitte?

Wodurch sind kritische Abschnitte mit einander verbunden? 

Kritischer Abschnitt = Bereich im Code, bei dessen Ausführung Probleme mit anderen Threads auftreten können

... sind Codebereiche, die (fast) nie gleich sind.

... beziehen sich immer auf Betriebsmittel, die einen (Speicher-)Zustand haben: Variablen, Platten etc.

 

Was bedeutet bei kritischen Abschnitten eine Klasse?

Alle kritischen Abschnitte, die sich auf dieselbe Menge von Betriebsmitteln beziehen, werden zu einer Klasse zusammen gefasst.

Alle kritischen Abschnitte einer Klasse müssen untereinander im Source-Code abgestimmt werden.

Kritische Abschnitte verschiedener Klassen brauchen nicht koordiniert zu werden.

Threads/Prozesse, die gleichzeitig kritische Abschnitte einer Klasse betreten könnten, müssen untereinander koordiniert werden.

Was ist im Zusammenhang mit Betriebssystemen Koordination, was Synchronisation und was Kooperation? 

Koordination
Abstimmung zwischen Threads, um Datenkonsistenz bei gleichzeitigem Zugriff zu erhalten

 

Synchronisation
Zeitliche Abstimmung hinsichtlich der Benutzung von Ressourcen bzw. Herstellen von "Gleichzeitigkeit", von Gleichtakt

 

Kooperation
zielgerichtetes Zusammenwirken  z,B. zur arbeitsteiligen Erfüllung einer komplexen Aufgabe

Was ist ein Deadlock? Nennen Sie ein Beispiel.

Was wird unter Starvation verstanden?

Deadlock
Warten auf ein Ereignis, das nicht eintreten kann, da die das Ereignis signalisierenden Vorgänge auf eine Aktivität eines Threads warten, der selbst auf das Ereignis wartet.

ist ein strukturell bzw. logisches Problem, das durch ein zyklenhaftes Warten entsteht
Bsp: Verkehrskreuzung mit vier Autos   /   You-after-you-Problem

-----------------------

Starvation

Zu langes Warten auf ein mögliches Ereignis als Folge übermäßiger "Ungerechtigkeit" zwischen Prozessen/Threads

Starvation ist ein Scheduling-Problem, d.h. ein Problem der schlechten Zuweisung von Ressourcen an Threads (Scheduling)

Beschreiben Sie eine durchaus reale Situation im Straßenverkehr, in der ein Deadlock entsteht.

Wenn 4 Autos an einer Kreuzung stehen und niemand weiß wer entsprechend der Rechts-vor-Links-Regel als erstes fahren "darf" und alle darauf gleichzeitig warten, dass irgendjemand losfährt.

 Was ist ein wechselseitiger Ausschluss und wozu dient dieser? 

Wechselseitiger Ausschluss = Mutual Exclusion

Ergebnis der Koordinierung zur Verhinderung von Problemen bei der gemeinsamen Benutzung von Variablen in kritischen Abschnitten
 

Threads daran gehindert, eine Ressource zu benutzen, wenn diese durch einen anderen Thread belegt ist. Ressource ist hier die Menge der gemeinsam benutzten Variablen einer Klasse.
Erst nach Freigabe kann ein anderer Thread die Ressource belegen.

Mit welchen Mitteln kann ein wechselseitiger Ausschluss realisiert werden? Nennen Sie ein Verfahren.

Synchronisation

Durch Realisierung von wechselseitigen Ausschlüssen wird der Zugriff auf gemeinsam benutzte Betriebsmittel so auf einander abgestimmt, dass die Konsistenz der Daten und damit die Korrektheit der Implementierung erreicht wird.

Was wird mit den beiden Operationen enter() und leave() (wie sie in der Veranstaltung eingeführt wurden) bewirkt? 

enter(Klassenname):

Betreten eines kritischen Abschnitts

 

leave(Klassenname):

Verlassen eines kritischen Abschnitts

Zur Realisierung des wechselseitigen Ausschlusses gibt es optimistische und pessimistische Verfahren. Beschreiben Sie beide prinzipiellen Verfahren und nennen Sie jeweils ein Beispiel (aus der Informatik), in dem diese angewandt werden. 

optimistisches Verfahren = Im kritischen Abschnitt 

Während der Aktivitäten innerhalb des kritischen Abschnittes wird auf Probleme geprüft. Gibt es sie, werden Verfahren durchgeführt, die den alten Zustand vor dem Konflikt wieder herstellen, und alles beginnt von vorn.

Bsp: Ethernet

 

pessimistisches Verfahren = Vor dem kritischen Abschnitt 

Vor dem Betreten wird sichergestellt, dass später keine Probleme auftreten können. 

Bsp: Semaphoren

 

Mit welchen Verfahren werden die beiden Operationen lock() und unlock() realisiert?

Worin besteht die wesentliche Eigenschaft dieser Verfahren? Dies wird manchmal als Spinlock bezeichnet. 

Die Realisierung von enter() und leave() mit Implementierungen, die mit Busy Waiting arbeiten, werden auch lock() und unlock() genannt, manchmal auch spinlock genannt.

 

Busy Waiting
Aktives Warten = Vorgang, bei dem eine CPU auf das Eintreten eines Ereignisses dadurch wartet, dass sie in einer Endlos-Schleife abfragt, ob es eingetreten ist. (das gibt es auch bei I/O)
 

Lock-Operation = spinlock
Realisierungen des Eintritts (Prolog) in einen kritischen Abschnitt mit Hilfe von Busy Waiting

Welche Art von Operationen realisiert der Algorithmus von Dekker? Die Semaphor-Operationen p() und v()? 

Nein,  enter() und leave() realisiert der Algorithmus von Dekker

Was sind Semaphoren?

Wie arbeiten binäre Semaphoren?

Worin liegt dabei die Implementierungsidee?

Nennen Sie die beiden Operationen, die Semaphoren ausmachen. 

Semaphoren:

Datenstruktur, die aus einer Ganzzahl und den Nutzungsoperationen „Reservieren/Probieren“ und „Freigeben“ besteht. Sie eignet sich insbesondere zur Verwaltung beschränkter (zählbarer) Ressourcen, auf die mehrere Prozesse oder Threads zugreifen sollen, wie etwa Erzeuger und Verbraucher, sowie zur Koordination asynchroner Abläufe

Operationen der Semaphore S:
- p(S) realisiert das Betreten p steht für passeer, probeeren (Niederländisch).
- v(S) realisiert das Verlassen v steht für vrijgeven, verhogen (Niederländisch).

Idee:
Anstatt den gesamten kritischen Abschnitt mit einem lock()- unlock()-Paar zu sperren, wird nur der Code von enter() und leave() gesperrt.

 

 

Eine Semaphore S besteht aus:
– Es gibt eine globale Variable state zur Repräsentation des Belegungszustandes.
   Diese hat initial die Anzahl der gleichzeitig im kritischen Abschnitt erlaubten Threads, z.B. 1.
– Weiterhin gibt es eine Warteschlange q mit den wartenden Threads ohne eine Priorität.
    Diese Warteschlange ist initial leer.
 

Wenn die maximale Anzahl der Threads im kritischen Abschnitt 1 ist, werden diese Semaphoren binär genannt, da es nur zwei Zustände für den Zustand state gibt. 

Kann bei Verwendung von Semaphoren auf enter() und leave() verzichtet werden? 

Nein.

-----------------

Der kritische Abschnitt ist dann immer noch geschützt, wird aber wie normaler Code ausgeführt.
Wir haben damit zwei „Stufen“:
- Innerhalb der Routinen enter() und leave()
- Zwischen den Aufrufen enter() und leave()

• Alle in enter() wartenden Threads verlieren die CPU und erhalten sie erst dann wieder, wenn der Thread den kritischen Abschnitt betreten darf. D.h. das Warten in enter() wird wie das Warten auf I/O realisiert.

Was sind Monitore? Was waren die wichtigsten Gründe für deren Konzeption (und Benutzung)? 

Monitor

Abstrakter Datentyp mit allen dafür notwendigen Operationen sowie der Bedingung, dass immer nur ein Thread eine der Operationen zu einem Zeitpunkt ausführen kann.

Hat ein Thread den Monitor betreten, so gehört er ihm bis er ihn verlassen hat oder in einer Warteschlange wartet.

 

Gründe:
Das Programmieren mit Semaphoren ist
- aufwändig
- relativ fehlerhaft, da die kritischen Abschnitte über den Code verteilt sind

Idee: In die Programmiersprache ein "sicheres" Konstrukt integrieren und den Compiler die p()- und
v()-Operationen generieren lassen: der Monitor

Jeder Monitor hat eine Entry-Queue.

Welche Bedeutung hat diese Queue?

Welche Prozesse kommen in diese Queue? 

Entry-Queue

Threads, die den Monitor betreten wollen, aber nicht dürfen

Welche Aufgabe haben die Conditionqueues und die Urgend-Queue bei den Monitoren?

Condition Queues
Hier warten Threads auf bestimmte Ereignisse
 

Urgent Queue
Hier warten Threads, die aufgrund des Eintretens von Ereignissen zusammen mit anderen aktiv werden wollen

Wenn sich ein Prozess innerhalb eines Monitors befindet und feststellt, dass er auf den Aufruf einer Methode durch einen anderen Prozess warten muss, was macht er?

Wenn ein Thread innerhalb des Monitors auf die Arbeit eines anderen Threads in diesem Monitor warten muss, gibt er den Monitor dadurch frei, dass er in eine Condition-Queue kommt und dort schläft. Dadurch kann der andere Thread den Monitor betreten.

----------------------------------------

Wenn der andere Thread gearbeitet hat, weckt dieser einen der Threads auf, die in der korrespondierenden Condition-Queue auf ihn gewartet hatten.

Da aber nur ein Thread zu einem Zeitpunkt im Monitor sein darf, kommt der aufweckende Threads in die Urgent-Queue.

Verlässt ein Thread den Monitor, so betreten die Threads der Urgent-Queue mit Priorität gegenüber der Entry-Queue jeweils einzeln den Monitor.

Study