Interprozesskommunikation Flashcards
Was ist die Synchr. bei der Interprozesskommunikation?
Koordination von parallelen Abläufen bzgl. zeitl. Ablauf oder Betriebsmittelnutzung
Wann herrscht Synchronisationbedarf? Welchen Problemklassen entstehen?
wenn parallele Abläufe auf gem. Betriebsmittel zugreifenProblemklassen:
1) verlorene Aktualisierung
2) inkonsistente Abfrage
Welche Fragen ergeben sich aus dem dargestellten Ablauf?
Beschreiben sie 2 falsche Szenarien, die hierbei entstehen können. Wie werden diese Szenarien benannt und was passiert da?
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.
was sind Race Conditions?
Situationen in denen das Resultat vom Timing der Teilnehmer abhängt
wie bezeichnet man derartige Abschnitte?
kritische Regionen
Wie lassen sich Race Conditions hier verhindern?
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.
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?
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.
Beschreiben sie nicht atomare Operationen
welche Methode zum Absichern mit Selbstverwaltung von Threads kennen Sie? Beschreiben sie diese und nennen sie auch die Nachteile
schreiben sie einen Code für die Absicherung mit Selbstverwaltung
Was ist eine Semaphore und was ist ihr Zweck?
welche Operationen hat eine Semaphore? was ist ihr Ablauf in der Verwendung?
- Beide Prozesse starten und möchten auf das Betriebsmittel zugreifen.
- Beide Prozesse treffen auf die Semaphore, die den Zugriff auf das Betriebsmittel regelt.
- Prozess A erreicht zuerst die Semaphore und ruft die P-Operation auf (Proberen).
- 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.
- Prozess A betritt die kritische Region und führt seine Aufgaben mit dem Betriebsmittel aus.
- In der Zwischenzeit erreicht auch Prozess B die Semaphore und ruft die P-Operation auf.
- 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.
- Prozess A beendet seine Arbeit in der kritischen Region und ruft die V-Operation auf (Verhogen) für die Semaphore auf.
- Die Semaphore erhöht den Zähler um 1 und überprüft, ob wartende Prozesse in der Warteschlange (WS) vorhanden sind.
- 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.
- Prozess B betritt die kritische Region und führt seine Aufgaben mit dem Betriebsmittel aus.
- Nachdem Prozess B die kritische Region verlassen hat, ruft er die V-Operation für die Semaphore auf.
- Die Semaphore erhöht den Zähler um 1 und überprüft erneut die Warteschlange (WS).
- 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.
- Der Ablauf kann sich wiederholen, wenn andere Prozesse versuchen, auf das Betriebsmittel zuzugreifen.
welche Implementierungsfragen stellen sich für eine Semaphore?
- Unteilbarkeit von P und V: P und V Operationen einer Semaphore müssen atomar ausgeführt werden, um Wettlaufbedingungen zu vermeiden.
- Aktives/Passives Warten: Prozesse können aktiv (CPU beanspruchend) oder passiv (in Wartezustand) auf die Freigabe einer Semaphore warten.
- Wartereihenfolge: Die Reihenfolge, in der Prozesse auf die Semaphore warten, kann durch FIFO oder Prioritäten festgelegt werden.
- Mehrfachbelegbarkeit: Eine Semaphore kann entweder mehrfach (Mehrfachbelegbarkeit) oder nur einmal belegt werden (Einfachbelegbarkeit).
Beschreiben sie die Absicherung durch die Semaphore mit einer marke