Prozesssynchronisation Flashcards
Was ist Prozesssynchronisation?
Prozesssynchronisation ist die Koordination des zeitlichen Ablaufs mehrerer parallel ablaufender Prozesse oder Threads, um konsistente Ergebnisse zu gewährleisten.
Wofür braucht man Prozesssynchronisation?
Prozesssynchronisation wird benötigt für den gemeinsamen Zugriff auf Daten, die Nutzung von beschränkten Ressourcen, den Datenaustausch zwischen Prozessen und die Steuerung von Unterprozessen.
Was ist ein Deadlock?
Ein Deadlock tritt auf, wenn eine Menge von Prozessen darauf wartet, dass ein Ereignis eintritt, das nur ein anderer Prozess in der Menge auslösen kann. Die Prozesse verharren für immer in diesem Zustand.
Was ist eine Race Condition?
Eine Race Condition ist eine Situation, in der das Ergebnis eines Programms von der zeitlichen Reihenfolge abhängt, in der bestimmte Operationen ausgeführt werden.
Was ist Starvation?
Starvation tritt auf, wenn ein Prozess nie die benötigten Ressourcen erhält, weil andere Prozesse bevorzugt werden.
Was ist eine kritische Region (Critical Section)?
Eine kritische Region ist ein Code-Abschnitt, der von nur einem Prozess oder Thread gleichzeitig betreten werden darf, um Inkonsistenzen zu vermeiden.
Was ist ein Semaphor?
Ein Semaphor ist eine Datenstruktur, die verwendet wird, um den Zugriff auf gemeinsame Ressourcen zu kontrollieren. Es gibt die Operationen wait()
(oder down()
) und signal()
(oder up()
). Ermöglicht je nach init wert die mehrfach nutzung.
Was ist ein Mutex?
Ein Mutex (Mutual Exclusion) ist ein Synchronisationsmechanismus, der sicherstellt, dass nur ein Thread oder Prozess gleichzeitig auf eine kritische Region zugreifen kann.
Was ist der Unterschied zwischen einem Semaphor und einem Mutex?
Ein Semaphor kann mehrere Prozesse gleichzeitig zulassen (abhängig vom Initialwert), während ein Mutex immer nur einem Prozess gleichzeitig den Zugriff erlaubt.
Was ist eine Zustandsvariable (Condition Variable)?
Eine Zustandsvariable blockiert einen Thread, bis ein bestimmtes Ereignis eintritt, das durch einen anderen Thread mit signal()
oder broadcast()
ausgelöst wird.
Was ist eine Barrier?
Eine Barrier ist eine Synchronisationsmethode, bei der mehrere Threads an einem Punkt warten, bis alle Threads diesen Punkt erreicht haben, bevor sie fortfahren.
Was ist ein Monitor?
Ein Monitor ist eine Abstraktion auf höherem Niveau, die kritische Regionen schützt und in objektorientierten Sprachen wie Java und C# zur Synchronisation verwendet wird.
Was ist eine Busy Waiting?
Busy Waiting bedeutet, dass ein Prozess aktiv in einer Schleife auf ein Ereignis wartet, anstatt in den Wartemodus zu wechseln. Es verbraucht unnötig CPU-Zeit.
Was sind die vier notwendigen Bedingungen für einen Deadlock?
- Wechselseitiger Ausschluss (Mutual Exclusion), 2. Halten und Warten (Hold and Wait), 3. Keine Präemption (No Preemption), 4. Zirkuläre Abhängigkeit (Circular Wait).
Wie kann ein Deadlock vermieden werden?
Ein Deadlock kann vermieden werden, indem mindestens eine der vier notwendigen Bedingungen verhindert wird, z.B. durch das Verhindern von Circular Wait oder das Aufheben von Mutual Exclusion.