Prozesssynchronisation Flashcards

1
Q

Was ist Prozesssynchronisation?

A

Prozesssynchronisation ist die Koordination des zeitlichen Ablaufs mehrerer parallel ablaufender Prozesse oder Threads, um konsistente Ergebnisse zu gewährleisten.

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

Wofür braucht man Prozesssynchronisation?

A

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.

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

Was ist ein Deadlock?

A

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.

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

Was ist eine Race Condition?

A

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.

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

Was ist Starvation?

A

Starvation tritt auf, wenn ein Prozess nie die benötigten Ressourcen erhält, weil andere Prozesse bevorzugt werden.

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

Was ist eine kritische Region (Critical Section)?

A

Eine kritische Region ist ein Code-Abschnitt, der von nur einem Prozess oder Thread gleichzeitig betreten werden darf, um Inkonsistenzen zu vermeiden.

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

Was ist ein Semaphor?

A

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.

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

Was ist ein Mutex?

A

Ein Mutex (Mutual Exclusion) ist ein Synchronisationsmechanismus, der sicherstellt, dass nur ein Thread oder Prozess gleichzeitig auf eine kritische Region zugreifen kann.

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

Was ist der Unterschied zwischen einem Semaphor und einem Mutex?

A

Ein Semaphor kann mehrere Prozesse gleichzeitig zulassen (abhängig vom Initialwert), während ein Mutex immer nur einem Prozess gleichzeitig den Zugriff erlaubt.

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

Was ist eine Zustandsvariable (Condition Variable)?

A

Eine Zustandsvariable blockiert einen Thread, bis ein bestimmtes Ereignis eintritt, das durch einen anderen Thread mit signal() oder broadcast() ausgelöst wird.

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

Was ist eine Barrier?

A

Eine Barrier ist eine Synchronisationsmethode, bei der mehrere Threads an einem Punkt warten, bis alle Threads diesen Punkt erreicht haben, bevor sie fortfahren.

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

Was ist ein Monitor?

A

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.

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

Was ist eine Busy Waiting?

A

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.

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

Was sind die vier notwendigen Bedingungen für einen Deadlock?

A
  1. Wechselseitiger Ausschluss (Mutual Exclusion), 2. Halten und Warten (Hold and Wait), 3. Keine Präemption (No Preemption), 4. Zirkuläre Abhängigkeit (Circular Wait).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Wie kann ein Deadlock vermieden werden?

A

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.

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

Was ist der Unterschied zwischen Deadlock Prevention und Deadlock Avoidance?

A

Bei der Deadlock Prevention wird verhindert, dass die Bedingungen für einen Deadlock eintreten. Bei der Deadlock Avoidance werden Deadlocks theoretisch möglich, aber das System sorgt dafür, dass es nur sichere Zustände gibt.

17
Q

Wie funktioniert Deadlock Recovery?

A

Bei der Deadlock Recovery werden eingetretene Deadlocks durch Prozessabbruch, Ressourcenentzug oder Rollback zu einem vorherigen Zustand aufgelöst.

18
Q

Wie können Race Conditions vermieden werden?

A

Race Conditions können durch den Einsatz von Synchronisationsmechanismen wie Semaphoren, Mutexen und kritischen Regionen vermieden werden.

19
Q

Was ist der Unterschied zwischen Livelock und Deadlock?

A

Ein Livelock tritt auf, wenn Prozesse ständig ihren Zustand ändern, aber nicht vorankommen, während bei einem Deadlock die Prozesse dauerhaft verharren und nicht mehr ausgeführt werden.

20
Q

Wie kann Starvation vermieden werden?

A

Starvation kann durch faire Scheduling-Algorithmen verhindert werden, die sicherstellen, dass jeder Prozess irgendwann Ressourcen erhält.

21
Q

Wie funktioniert die Modellierung und Implementierung eines Petri-Netzes?

A
  • Petri-Netze sind ein mathematisches Modell zur Beschreibung von verteilten Systemen und Prozessen, die nebenläufig (parallel) ablaufen können.

Bestandteile eines Petri-Netzes:

  1. Stellen (Places): Repräsentieren Zustände.
  2. Transitionen (Transitions): Repräsentieren Ereignisse, die Zustandsänderungen verursachen.
  3. Markierungen (Tokens): Repräsentieren die Ressourcen oder den aktuellen Zustand des Systems.

Implementierung:

Eine Transition wird aktiviert, wenn alle Eingabestellen genügend Tokens haben. Beim Aktivieren verbraucht die Transition Tokens von den Eingabestellen und produziert Tokens für die Ausgabestellen.
Petri-Netze lassen sich durch Software-Tools simulieren, z.B. zur Modellierung von parallelen und verteilten Systemen.
Petri-Netze helfen, Synchronisationsprobleme und Deadlocks in Systemen zu visualisieren und zu analysieren.

22
Q

Wie funktionieren Condition Variables in Verbindung mit pthread_cond_wait und wofür werden sie

A

Condition Variables ermöglichen es Threads, auf bestimmte Bedingungen zu warten oder andere Threads auf eine Zustandsänderung aufmerksam zu machen.

  • Ein Thread ruft pthread_cond_wait() auf, um auf eine Condition Variable zu warten. Dabei gibt der Thread den zugehörigen Mutex frei und wird blockiert, bis er durch eine andere Bedingung geweckt wird.
  • Ein anderer Thread kann mit pthread_cond_signal() (weckt einen wartenden Thread) oder pthread_cond_broadcast() (weckt alle wartenden Threads) die Condition Variable signalisieren, dass die Bedingung erfüllt ist.
    Diese Mechanismen werden verwendet, um sicherzustellen, dass Threads effizient auf Ressourcen oder Ereignisse warten, ohne unnötig CPU-Zeit durch Busy-Waiting zu verbrauchen.
23
Q

Was ist der Unterschied zwischen Named und Unnamed Semaphores?

A

Named Semaphores: Diese Semaphoren sind systemweit verfügbar und können von mehreren Prozessen über einen eindeutigen Namen (z.B. ein Dateipfad) angesprochen werden. Sie werden mit der Funktion sem_open() erstellt und können über Prozesse hinweg verwendet werden.

Unnamed Semaphores: Diese Semaphoren sind nur innerhalb eines Prozesses oder zwischen Threads eines Prozesses verfügbar. Sie werden mit der Funktion sem_init() erstellt und benötigen keinen Namen, sondern werden direkt im Speicher (z.B. als Variable) angelegt.

Named Semaphores eignen sich für die Synchronisation zwischen mehreren Prozessen, während Unnamed Semaphores in der Regel für die Synchronisation innerhalb eines Prozesses oder zwischen Threads verwendet werden.