Kooperation von Prozessen Flashcards
1
Q
Semaphor aus Benutzersicht (Definition)
A
Ein Semaphor ist eine von mehreren Prozessen nutzbare Integer Variable, die nur über die drei folgenden Aktionen veränderbar ist:
- sem.init(n) initialisiert den Semaphor sem mit n e N0
- sem.P() dekrementiert sem um 1
- sem.V() inkrementiert sem um 1
Zusätzlich gilt:
- Alle Aktionen auf einem Semaphor sind wechselseitig ausgeschlossen.
- Der Wert eines Semaphores wird nie negativ.
2
Q
Semaphor aus Implementierungssicht (Definition)
A
Ein Semaphor ist ein Datentyp, der aus einer Zählervariablen sem und seinem Speicher für Prozesszustände (Warteraum) susp besteht, auf dem nur die folgenden, wechselseitig ausgeschlossenen Operationen definiert sind:
- sem.init(n) :: sem = n; susp = PCBQueue()=; mit n e N0
- sem.P() :: sem = sem - 1 Falls (sem < 0) suspendiere den Ausführenden Prozess und füge ihn in der Warteschlange susp ein
- sem.V() :: sem ) sem + 1 Falls (sem <= 0) entnimm den ersten wartenden Prozess aus der Warteschlange susp und füge ihn in die READY Liste ein