Informatik · Klasse 12 · aktualisiert
Coffman-Bedingungen: Deadlocks sicher erkennen
Du lernst die vier Coffman-Bedingungen kennen, prüfst damit eine Ressourcensituation und begründest eine passende Maßnahme gegen Deadlocks.
0 von 11 Aufgaben gelöst
Kurz gesagt
Nach Coffman et al. sind vier Bedingungen zusammen hinreichend für die Möglichkeit einer Verklemmung: Mutual Exclusion, Hold and Wait, No Preemption und Circular Wait. Wird mindestens eine davon nicht erfüllt, spricht man von Verhinderung.
Du druckst, speicherst und surfst, und im Hintergrund teilen sich Prozesse Drucker, Dateien und Speicher. Manchmal wartet dann jeder auf jeden, und nichts geht mehr. Mit vier Bedingungen erkennst du, ob so eine Verklemmung möglich ist, und du kannst begründen, wie man sie verhindert.
Deine Lernziele
Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.
3 Abschnitte
Ein Betriebsmittel (auch Ressource) ist ein Systemelement, das ein Prozess zur korrekten Ausführung braucht, zum Beispiel Festplatte, Arbeitsspeicher oder Drucker. Das Betriebssystem regelt den Zugriff darauf. Ein Deadlock (Verklemmung) ist eine zyklische Wartesituation zwischen mehreren Prozessen: Jeder beteiligte Prozess wartet auf mindestens ein Betriebsmittel, das ein anderer beteiligter Prozess bereits exklusiv belegt hat.
Nach Coffman et al. sind die folgenden vier Bedingungen hinreichend für die Möglichkeit einer Verklemmung.
Mutual Exclusion (gegenseitiger Ausschluss): Der Zugriff auf ein Betriebsmittel ist exklusiv. Nur einem einzigen Prozess wird der Zugriff gestattet. Eine Datei, auf die schreibend zugegriffen wird, kann zum Beispiel nur exklusiv von einem Prozess genutzt werden. Gelesen werden kann eine Datei dagegen von mehreren Prozessen gleichzeitig.
Hold and Wait: Die Prozesse fordern Betriebsmittel an, behalten aber zugleich den Zugriff auf andere.
No Preemption: Die Betriebsmittel werden ausschließlich durch die Prozesse freigegeben, weil der Ressourcenzugriff eines Prozesses nicht unterbrochen werden kann. Ein Drucker ist ein nicht-entziehbares Betriebsmittel: Er muss bis zur Beendigung der Tätigkeit beim Prozess bleiben. Speicher dagegen ist entziehbar.
Circular Wait (zirkuläres Warten): Mindestens zwei Prozesse besitzen bezüglich der Betriebsmittel eine zirkuläre Abhängigkeit.
Definition
Deadlock
Ein Deadlock (Verklemmung) ist ein Zustand mit einer zyklischen Wartesituation zwischen mehreren Prozessen. Jeder beteiligte Prozess wartet auf ein Betriebsmittel, das ein anderer beteiligter Prozess exklusiv belegt hat.
| Bedingung | Bedeutung für die Betriebsmittel |
|---|---|
| Mutual Exclusion | Nur ein einziger Prozess darf auf das Betriebsmittel zugreifen. |
| Hold and Wait | Ein Prozess behält Betriebsmittel und fordert weitere an. |
| No Preemption | Betriebsmittel werden ausschließlich vom Prozess selbst freigegeben. |
| Circular Wait | Mindestens zwei Prozesse hängen zirkulär voneinander ab. |
Teste dich
Einen festen Ablauf schreibt dir die Theorie hier nicht vor. Ein sinnvoller Vorschlag zum Üben: Du fragst die vier Bedingungen nacheinander ab und belegst jede am Fall.
Zuerst klärst du, ob überhaupt eine Verklemmung in Frage kommt. Existiert nur ein Prozess in einem geschlossenen System, so kann er niemals verklemmen. Ebenso kann ein Prozess, der nur ein Betriebsmittel benötigt, nicht verklemmen. Verklemmungen können bei Systemen eintreten, die mehrere Prozesse parallel ablaufen lassen (Multitasksysteme) und bei denen die Reihenfolge der Betriebsmittelvergabe nicht festgelegt ist. Liegen die Ausführungszeiten der zirkulär abhängigen Prozesse weit genug auseinander, kommt es nicht zum Deadlock.
Dann fragst du der Reihe nach: Ist der Zugriff exklusiv (Mutual Exclusion)? Kann man das Betriebsmittel dem Prozess nicht entziehen (No Preemption)? Hält ein Prozess etwas und fordert zugleich mehr an (Hold and Wait)? Bilden mindestens zwei Prozesse einen Kreis aus Abhängigkeiten (Circular Wait)? Sind alle vier erfüllt, ist eine Verklemmung möglich. Fehlt eine, sind nicht alle vier erfüllt.
Ein zweiter Fall: Zwei Jobs Jₕ und Jₙ und zwei Ressourcen R₁ und R₂. Jₙ beginnt und greift R₁. Jₕ verdrängt Jₙ und greift erst R₂ und dann R₁. Dabei geht die Zeitscheibe von Jₕ auf Jₙ über. Jₙ greift R₂, bevor er R₁ freigibt. Es tritt eine Verklemmung auf: Keiner der beiden Jobs kann gerechnet werden, weil jeder eine Ressource hält, die der andere benötigt. Man sagt, sie hängen zyklisch voneinander ab.
Beispiel: Bildschirm und Drucker (π₁ und π₂)
- 1Dem Prozess π₁ ist der Bildschirm zugeteilt. Gleichzeitig benötigt π₁ den Drucker.
- 2Der Drucker ist dem Prozess π₂ zugeteilt. π₂ fordert wiederum den Bildschirm.
- 3Mutual Exclusion: Bildschirm und Drucker gehören jeweils einem Prozess. Annahme: Nur dieser darf sie nutzen.
- 4No Preemption: Der Drucker bleibt bis zum Ende der Tätigkeit beim Prozess. Für den Bildschirm nehmen wir dasselbe an.
- 5Hold and Wait: π₁ hält den Bildschirm und fordert den Drucker. π₂ hält den Drucker und fordert den Bildschirm.
- 6Circular Wait: π₁ wartet auf π₂ und π₂ wartet auf π₁. Alle vier Bedingungen sind erfüllt.
Merke: Prüfe am Fall jede der vier Bedingungen einzeln. Ein Prozess, der nur ein Betriebsmittel benötigt, kann nicht verklemmen.
Teste dich
Treten Verklemmungen ein, können sie in der Regel nicht normal beseitigt werden. Stattdessen sollte die Betriebsmittelverwaltung präventive Maßnahmen anwenden, um eine geeignete Sequentialisierung zu erreichen. Man spricht von einer Verhinderung, wenn mindestens eine der vier Bedingungen nicht erfüllt wird. Die Idee: Du suchst eine Bedingung, die du am Fall abschalten kannst.
Zu den Bedingungen gibt es diese Maßnahmen. Gegen No Preemption: Preemption durchführen. Einem Prozess werden Betriebsmittel entzogen, um sie einem anderen zuzuteilen. Gegen Hold and Wait: Jeder Prozess gibt zu Beginn an, welche Betriebsmittel er benötigt. Falls alle benötigten Betriebsmittel gleichzeitig frei sind, bekommt er sie auf einmal zugeteilt. Gegen Mutual Exclusion: Man macht die Betriebsmittel für alle Prozesse zugänglich, indem man den exklusiven Zugriff auflöst. Alternativ gibt es Spooling (Beispiel: Drucker) oder die Virtualisierung von Betriebsmitteln (Beispiel: CPU). Gegen Circular Wait: Die Betriebsmittel werden linear geordnet und nur in dieser definierten Reihenfolge angefordert oder zugeteilt.
Begründen heißt also: Du nennst die Bedingung, die wegfällt, und sagst, wie die Maßnahme das erreicht.
Verwechsle Verhinderung nicht mit Vermeidung. Bei der Vermeidung sind Verklemmungen theoretisch möglich, das System überwacht die Prozesse aber so, dass sie nicht verklemmen. Das beruht auf der Methode des sicheren Zustands. In der Literatur werden beide Begriffe auch öfter vertauscht.
Beispiel: Scanner und Drucker (ausgedachtes Beispiel)
- 1Ausgedachte Lage: Prozess A hält den Scanner und fordert den Drucker. Prozess B hält den Drucker und fordert den Scanner.
- 2Gewählte Maßnahme: Circular Wait ausschließen.
- 3Die Betriebsmittel werden linear geordnet: erst Scanner, dann Drucker. Angefordert wird nur in dieser Reihenfolge.
- 4B muss deshalb zuerst den Scanner anfordern. Hält A ihn, wartet B, ohne den Drucker zu halten.
- 5Annahme: A braucht nur diese beiden Betriebsmittel und wird fertig. Dann gibt A beide frei, und B kann weitermachen.
- 6Begründung: Der Kreis aus Abhängigkeiten kann nicht entstehen. Circular Wait ist nicht erfüllt.
Merke: Verhinderung heißt: Mindestens eine der vier Bedingungen wird nicht erfüllt. Begründe immer, welche.
Teste dich
Alles auf einen Blick
Coffman-Bedingungen
Deadlock
Eine zyklische Wartesituation zwischen Prozessen, die auf Betriebsmittel warten, die andere exklusiv belegt haben.
Vier Bedingungen
Mutual Exclusion, Hold and Wait, No Preemption und Circular Wait sind nach Coffman et al. zusammen hinreichend für die Möglichkeit einer Verklemmung.
Prüfen
Frage die vier Bedingungen nacheinander am Fall ab und belege jede.
Grenze
Ein Prozess, der nur ein Betriebsmittel benötigt, kann nicht verklemmen.
Verhinderung
Mindestens eine der vier Bedingungen wird nicht erfüllt.
Maßnahmen
Betriebsmittel entziehen, alles auf einmal zuteilen, Zugriff auflösen (zum Beispiel Spooling) oder linear ordnen.
Musteraufgabe · Schritt für Schritt
Kreuzung mit vier Fahrzeugen prüfen (ausgedachte Annahmen)
- 1Lage: Von allen vier Seiten fahren Fahrzeuge ein Stück in die Kreuzung hinein. Jedes Kreuzungsviertel ist eine Ressource, und jedes Fahrzeug benötigt die zwei Viertel vor sich.
- 2Schritt 1: Die ganze Kreuzung als eine Ressource zu sehen, reicht nicht. Wir teilen sie in vier Kreuzungsviertel auf.
- 3Schritt 2, Mutual Exclusion: Annahme: In einem Viertel steht höchstens ein Fahrzeug. Erfüllt.
- 4Schritt 3, No Preemption: Annahme: Ein Fahrzeug kann sein Viertel nicht an ein anderes abgeben. Erfüllt.
- 5Schritt 4, Hold and Wait: Jedes Fahrzeug steht schon in einem Viertel und wartet auf das zweite. Erfüllt.
- 6Schritt 5, Circular Wait: Jedes Fahrzeug wartet auf ein Viertel, das ein anderes Fahrzeug im Kreis belegt. Erfüllt.
- 7Ergebnis: Unter diesen Annahmen sind alle vier Bedingungen erfüllt. Eine Verklemmung ist möglich.
Fehler finden
Prüfe die Aussagen zu Jₕ und Jₙ mit R₁ und R₂ In einer Zeile steckt ein Fehler. Tippe sie an.
Fehler in Zeile 5Eine einzelne Bedingung genügt nicht, man prüft alle vier. Richtig: Jₕ und Jₙ hängen außerdem zyklisch voneinander ab (Circular Wait).
Lückentext
Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.
Bei behält ein Prozess Betriebsmittel, während er weitere anfordert. Von Verhinderung spricht man, wenn mindestens der vier Bedingungen nicht erfüllt wird. Um Circular Wait auszuschließen, werden die Betriebsmittel .
Karteikasten
Erst selbst überlegen, dann umdrehen.
Übung mit Feedback