IPC Flashcards
Erzeuger/Verbraucher-Problem
Erkläre das Erzeuger/Verbraucher-Problem?
- Der volle Puffer blockiert den Produzenten
- Der leere Puffer blockiert den Verbraucher
- Die müssen sich abwechselnd mit der Liste beschäftigen
Implementierung von Semaphoren
Wo wird die Ausführung von up() und down() durchgeführt?
- Die Ausführung von up() und down() wird im kritischem Abschnitt durchgeführt.
- “down” bezieht sich auf den Zustand warten im PCB
- “up” bezieht sich auf den Zustand bereit im PCB
Monitore
Was geschieht, wenn ein Prozess im Monitor sich mit einem anderen Prozess synchronisieren muss?
- Es wird ein Signal über WAIT() und SIGNAL() an die Bedingungsvariable übergeben
- Bsp.: WAIT(leer) // Prozess blockiert an Bedingung “leer”
- Bsp.: SIGNAL(leer) // Prozess weckt einen beliebigen auf
Implementierung von Monitoren
Wie werden Monitore implementiert?
Monitore werden mit Semaphoren implementiert
Implementierung von Monitoren
Was besitzt jeder Monitor?
- Eine SEMAPHORE mutex = 1 // regelt exklusiven Zugriff
- Eine SEMAPHORE next = 0 // für Prozess, der SIGNAL() sagt und deshalb blockieren muss
- INTEGER next-anz = 0 // zählt Prozesse an “next”
Mailbox
Wie erfolgt die Synchronisation?
Die Synchronisation erfolgt über den Nachrichten-Austausch
Mailbox
Welche zwei Funktionsprimitive gibt es?
- send ( mailbox, message )
- receive ( mailbox, message )
- Die Funktionen arbeiten entweder blockierend oder nur receive arbeitet blockierend
Mailbox
Lässt sich das Erzeuger/Verbraucher Problem abbilden mit dem Fall send und receive blockieren?
Ja, es lässt sich leicht abbilden, da die Mailbox ein beschränkter Puffer ist
Mailbox
Lässt sich das Erzeuger/Verbraucher Problem abbilden mit dem Fall Nur receive ist blockierend?
- Der Verbraucher schickt Nachrichten, welche leere Slots repräsentieren
- Der Erzeuger kann auf diese Nachrichten warten
Klassische Synchronisationsprobleme
Was ist ein beispielhaftes Problem und wie kann es gelöst werden?
- Der Zugriff auf gemeinsame Datenbank
- Der erste Leser sperrt Datenbank und die anderen Leser werden gezählt
- Der letzte Leser entsperrt die Datenbank
- Die Leser haben Vorrang vor Schreibern
- Der Schreiber muss warten, bis keine Leser mehr da sind