Interprozesskommunikation Flashcards

1
Q

Was ist die Synchr. bei der Interprozesskommunikation?

A

Koordination von parallelen Abläufen bzgl. zeitl. Ablauf oder Betriebsmittelnutzung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Wann herrscht Synchronisationbedarf? Welchen Problemklassen entstehen?

A

wenn parallele Abläufe auf gem. Betriebsmittel zugreifenProblemklassen:
1) verlorene Aktualisierung
2) inkonsistente Abfrage

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Welche Fragen ergeben sich aus dem dargestellten Ablauf?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Beschreiben sie 2 falsche Szenarien, die hierbei entstehen können. Wie werden diese Szenarien benannt und was passiert da?

A

in beiden Fällen geht eine Aktualisierung verloren

In dem zweiten beschriebenen Fall kann es zu folgender Situation kommen:

1 Thread B liest den aktuellen Wert von “saldo” (25,50).
2 Thread A erhöht den Wert von “saldo” um 5,10 (30,60).
3 Bevor Thread B seine Operation ausführt, erhält er die CPU-Zeit zurück.
4 Thread B subtrahiert den Wert von 4,5 von seinem gelesenen Wert (25,50 - 4,5 = 20,00).
5 Thread A hat seine Operation erfolgreich durchgeführt, aber die Änderung wird von Thread B überschrieben, da er mit dem alten Wert (25,50) weitergerechnet hat.

Dies führt zu einem inkonsistenten Ergebnis, da die Änderung von Thread A von Thread B rückgängig gemacht wird.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

was sind Race Conditions?

A

Situationen in denen das Resultat vom Timing der Teilnehmer abhängt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

wie bezeichnet man derartige Abschnitte?

A

kritische Regionen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wie lassen sich Race Conditions hier verhindern?

A

Wenn die Transaktionen atomare Aktionen wären. Atomare Aktionen gewährleisten, dass eine Transaktion als Ganzes ausgeführt wird und nicht von anderen Threads unterbrochen werden kann. Dadurch werden Race Conditions vermieden und die Konsistenz der Daten sichergestellt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

was sind die Probleme beim naiven Ansatz zum Absichern und Freigeben von krit. Regionen wenn man eine boolsche Variable BM_Besetzt (auf False oder True) benutzen möchte, um ein Betriebsmittel zu benutzen, wenn BM_Besetzt auf False ist?

A

Race Conditions: Wenn mehrere Threads gleichzeitig auf die boolesche Variable “BM_Besetzt” zugreifen und diese ändern möchten, kann es zu Race Conditions kommen. Das bedeutet, dass der Wert der Variable unvorhersehbar wird, da die Threads in beliebiger Reihenfolge darauf zugreifen und Änderungen vornehmen können.

Deadlocks: Ein Deadlock tritt auf, wenn zwei oder mehr Threads aufeinander warten, ohne jemals weiterzukommen. Bei Verwendung der booleschen Variable “BM_Besetzt” als Lock-Mechanismus besteht die Gefahr, dass ein Deadlock entsteht, wenn ein Thread die Variable auf True setzt und dann blockiert, während ein anderer Thread wartet, dass die Variable auf False gesetzt wird. In diesem Fall würden beide Threads in einer Endlosschleife steckenbleiben.

Ressourcenverschwendung: Wenn Threads in einer Schleife warten, bis die boolesche Variable “BM_Besetzt” auf False gesetzt wird, kann dies zu einer Ressourcenverschwendung führen. Die Threads würden kontinuierlich die Variable überprüfen und die CPU-Zeit verbrauchen, selbst wenn das Betriebsmittel nicht verfügbar ist. Dies führt zu ineffizienter Nutzung der Ressourcen.

Fehlende Synchronisation: Der naive Ansatz mit einer booleschen Variable als Lock-Mechanismus bietet keine ausreichende Synchronisation zwischen den Threads. Es besteht keine Garantie dafür, dass nur ein Thread zur gleichen Zeit auf die kritische Region zugreift. Dies kann zu inkonsistenten Daten oder unerwünschten Zuständen führen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Beschreiben sie nicht atomare Operationen

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

welche Methode zum Absichern mit Selbstverwaltung von Threads kennen Sie? Beschreiben sie diese und nennen sie auch die Nachteile

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

schreiben sie einen Code für die Absicherung mit Selbstverwaltung

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was ist eine Semaphore und was ist ihr Zweck?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

welche Operationen hat eine Semaphore? was ist ihr Ablauf in der Verwendung?

A
  1. Beide Prozesse starten und möchten auf das Betriebsmittel zugreifen.
  2. Beide Prozesse treffen auf die Semaphore, die den Zugriff auf das Betriebsmittel regelt.
  3. Prozess A erreicht zuerst die Semaphore und ruft die P-Operation auf (Proberen).
  4. Die Semaphore prüft ihren internen Zähler. Wenn der Zähler größer als 0 ist, wird Prozess A den Zugriff auf das Betriebsmittel erhalten und die P-Operation erfolgreich durchführen. Der Zähler wird um 1 verringert.
  5. Prozess A betritt die kritische Region und führt seine Aufgaben mit dem Betriebsmittel aus.
  6. In der Zwischenzeit erreicht auch Prozess B die Semaphore und ruft die P-Operation auf.
  7. Da der Zähler bereits 0 ist (durch Prozess A), blockiert die P-Operation von Prozess B und Prozess B wird in eine Warteschlange (WS) für die Semaphore eingereiht.
  8. Prozess A beendet seine Arbeit in der kritischen Region und ruft die V-Operation auf (Verhogen) für die Semaphore auf.
  9. Die Semaphore erhöht den Zähler um 1 und überprüft, ob wartende Prozesse in der Warteschlange (WS) vorhanden sind.
  10. Da Prozess B in der Warteschlange (WS) ist, wird der Zähler nicht erneut auf 0 gesetzt und Prozess B erhält den Zugriff auf das Betriebsmittel.
  11. Prozess B betritt die kritische Region und führt seine Aufgaben mit dem Betriebsmittel aus.
  12. Nachdem Prozess B die kritische Region verlassen hat, ruft er die V-Operation für die Semaphore auf.
  13. Die Semaphore erhöht den Zähler um 1 und überprüft erneut die Warteschlange (WS).
  14. Wenn es keine weiteren wartenden Prozesse in der Warteschlange (WS) gibt, bleibt der Zähler größer als 0 und andere Prozesse können nun auf das Betriebsmittel zugreifen.
  15. Der Ablauf kann sich wiederholen, wenn andere Prozesse versuchen, auf das Betriebsmittel zuzugreifen.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

welche Implementierungsfragen stellen sich für eine Semaphore?

A
  1. Unteilbarkeit von P und V: P und V Operationen einer Semaphore müssen atomar ausgeführt werden, um Wettlaufbedingungen zu vermeiden.
  2. Aktives/Passives Warten: Prozesse können aktiv (CPU beanspruchend) oder passiv (in Wartezustand) auf die Freigabe einer Semaphore warten.
  3. Wartereihenfolge: Die Reihenfolge, in der Prozesse auf die Semaphore warten, kann durch FIFO oder Prioritäten festgelegt werden.
  4. Mehrfachbelegbarkeit: Eine Semaphore kann entweder mehrfach (Mehrfachbelegbarkeit) oder nur einmal belegt werden (Einfachbelegbarkeit).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Beschreiben sie die Absicherung durch die Semaphore mit einer marke

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

beschreiben sie die Synchronisation von Threads. Was wird dabei benutzt?

A
17
Q

Beschreiben sie ein Produzenten/Konsumentensystem mit Zählsemaphore

A
18
Q

können sie ein Code Beispiel eines Produzenten/Konsumentensystems mit Zählsemaphore 1:1 machen?

A
19
Q

können sie ein Code Beispiel eines Produzenten/Konsumentensystems mit Zählsemaphore m:n machen?

A
20
Q

beschreiben sie ein Leser/Schreiber System mit Mutex und wann synchronisationsbedarf herrscht

A
21
Q

beschreiben sie ein Leser/Schreiber System mit Mutex in Code

A
22
Q

wie können Threads so synchronisiert werden, dass immer einer von den beiden auf den anderen jeweils wartet? Beschreiben sie im Detail was passiert

A
23
Q

Gib eine Beschreibung wie der dargestellte Verlauf der Operationen der Threads zum Deadlock führt

A

In dem beschriebenen Szenario haben sich die Threads selbst blockiert, indem sie auf die Freigabe des jeweils anderen Threads gewartet haben. Durch diese gegenseitige Blockade entsteht ein Deadlock, da keiner der Threads seine Ressourcen freigeben kann, um den anderen fortzusetzen.

Ein Deadlock tritt auf, wenn mehrere Threads oder Prozesse in einer Situation stecken bleiben, in der sie auf Ressourcen warten, die von anderen Threads oder Prozessen gehalten werden, während sie gleichzeitig Ressourcen besitzen, auf die die anderen warten. Dadurch entsteht eine Blockade, bei der alle beteiligten Threads oder Prozesse nicht mehr vorankommen können.

Um Deadlocks zu vermeiden, ist es wichtig, eine sorgfältige Synchronisierung und Koordination zwischen den Threads oder Prozessen sicherzustellen, um sicherzustellen, dass Ressourcen ordnungsgemäß freigegeben werden und keine gegenseitige Blockade entsteht.