# Prozesszustände - Bereit (Ready) - Laufend (Running) - Blockiert (Blocked) - Beendet (Terminated) ## 2-Zustands-Modell ![image.png](image.png) Prozesse, die untätig werden, werden in einer Warteschlange gespeichert - Wird nach Priorität / Wartezeit sortiert ![image_1.png](image_1.png) #### Pro - Einfach realisierbar #### Contra - Annahme, dass Prozesse jederzeit zur Ausführung bereit sind - Es gibt blockierte Prozesse - Wartet auf Ein-/Ausgabe - Wartet auf Ergebnis eines anderen Prozesses - Wartet auf Reaktion eines Benutzers ## 3-Zustands-Modell ### Ereignisbezogene Warteschlangen ![image_3.png](image_3.png) - Für jedes Ereignis, auf welches ein Prozess wartet, gibt es eine Warteschlange - Tritt das Ereignis ein, werden alle Prozesse der WS in die WS mit den *ready* Prozessen überführt ![image_2.png](image_2.png) ## 5-Zustands-Modell Anzahl der ausführbaren Prozesse *limitieren*, um Speicher zu sparen - Zwei weitere Zustände: - **new (new)** - Prozesse, deren PCB das Betriebssystem bereits erzeugt hat, aber noch nicht in der Warteschlange sind - **beendet (exit)** - Abgearbeitete oder abgebrochene Prozesse, deren PCB und Eintrag noch nicht aus der Prozesstabelle entfernt wurden ![image_4.png](image_4.png) ## 6-Zustands-Modell Falls nicht genügend physischer Hauptspeicher für alle Prozesse: - **Auslagerungsspeicher (Swap)** - Zustand: **suspendiert (suspended)** - dadurch steht den Prozessen in den Zuständen _rechnend_ und _bereit_ mehr Hauptspeicher zur Verfügung ![image_5.png](image_5.png) ## 7-Zustands-Modell ![image_6.png](image_6.png) ## Zustands-Modell von Linux - ähnlich wie [7-Zustands-Modell](#7-zustands-modell) - Zustand _rechnend_: - **benutzer rechnend (user running)** - Prozesse im Benutzermodus - **kernel rechnend (kernel running)** - Prozesse im Kernel-Modus - Zustand _beendet (exit)_ = _Zombie_ - ist fertig abgearbeitet - Eintrag in der Prozesstabelle existiert noch bis Elternprozess den Rückgabewert abgefragt hat# ![image_7.png](image_7.png)