Deadlock in Operating-System: Was ist zirkuläres Warten (Beispiele)
⚡ Intelligente Zusammenfassung
Ein Deadlock in einem Betriebssystem entsteht, wenn eine Reihe von Prozessen blockiert ist, weil jeder Prozess eine Ressource belegt und auf eine andere wartet, die von einem anderen Prozess belegt wird. Dadurch entsteht eine kreisförmige Kette, in der kein Prozess fortfahren kann.

Was ist Deadlock?
Deadlock ist eine Situation, die in einem Betriebssystem Ein Deadlock tritt auf, wenn ein Prozess in einen Wartezustand gerät, weil ein anderer wartender Prozess die benötigte Ressource belegt. Dies ist ein häufiges Problem in Multiprocessing-Umgebungen, in denen mehrere Prozesse eine bestimmte Art von sich gegenseitig ausschließender Ressource gemeinsam nutzen, die als Softlock oder Softwarelock bezeichnet wird.
Wenn es zu einer Blockade kommt, kann keiner der beteiligten Prozesse fortgesetzt werden, sodass die betroffene Arbeit so lange unterbrochen wird, bis das Betriebssystem eingreift.
Beispiel für einen Deadlock
- Ein Beispiel aus der Praxis wäre der Verkehr, der nur in eine Richtung fließt.
- Hier wird eine Brücke als Ressource betrachtet.
- Wenn es also zu einer Verklemmung kommt, kann diese behoben werden, indem ein Fahrzeug zurücksetzt (Ressourcen unterbricht und zurückrollt).
- Bei einer Blockade müssen möglicherweise mehrere Fahrzeuge rückwärts fahren.
- Hungertod ist also möglich.
Beispiel für einen Deadlock
Was ist zirkuläres Warten?
Ein Prozess wartet auf eine Ressource, die von einem zweiten Prozess gehalten wird, welcher wiederum auf eine Ressource wartet, die von einem dritten Prozess gehalten wird, und so weiter. Dies setzt sich fort, bis der letzte Prozess auf eine Ressource wartet, die vom ersten Prozess gehalten wird. Dadurch entsteht eine geschlossene Kette.
Beispielsweise wird Prozess A Ressource B zugewiesen, während er Ressource A anfordert. Auf die gleiche Weise wird Prozess B Ressource A zugewiesen, während er Ressource B anfordert. Dadurch entsteht eine zirkuläre Warteschleife.
Beispiel für zirkuläres Warten
Ein Computer verfügt beispielsweise über drei USB-Laufwerke und drei Prozesse. Jeder der drei Prozesse belegt eines der USB-Laufwerke. Fordert nun jeder Prozess ein weiteres Laufwerk an, entsteht eine Deadlock-Situation, da jeder Prozess darauf wartet, dass ein USB-Laufwerk freigegeben wird, während es noch belegt ist. Dies führt zu einer Endlosschleife.
Beispiel für zirkuläres Warten
Deadlock-Erkennung im Betriebssystem
Ein Deadlock kann vom Ressourcenplaner erkannt werden. Ein Ressourcenplaner hilft dem Betriebssystem dabei, die Ressourcenverwaltung zu gewährleisten. track aller Ressourcen, die verschiedenen Prozessen zugewiesen sind. Sobald ein Deadlock erkannt wird, kann er durch die Unterbrechung von Ressourcen, das Zurücksetzen eines Prozesses oder das Beenden eines oder mehrerer der im Deadlock befindlichen Prozesse behoben werden.
Deadlock-Verhinderung im Betriebssystem
Es ist wichtig, einen Deadlock von vornherein zu verhindern. Das System prüft jede Transaktion vor ihrer Ausführung, um sicherzustellen, dass sie nicht zu einem Deadlock führt. Selbst kleine Operationen, die potenziell einen Deadlock verursachen könnten, werden niemals ausgeführt.
Die Vermeidung von Deadlocks ist eine Reihe von Methoden, die sicherstellen, dass mindestens eine der vier notwendigen Bedingungen nicht erfüllt sein kann.
Keine Vorauszahlung
Eine Ressource kann nur dann freiwillig von dem Prozess freigegeben werden, der sie hält, nachdem dieser Prozess seine Aufgabe abgeschlossen hat.
- Wenn ein Prozess, der Ressourcen belegt, eine weitere Ressource anfordert, die ihm nicht sofort zugewiesen werden kann, werden alle seine Ressourcen freigegeben.
- Unterbrochene Ressourcen werden der Liste der Ressourcen hinzugefügt, auf die der Prozess wartet.
- Der Prozess wird erst dann neu gestartet, wenn er sowohl seine alten Ressourcen als auch die neu angeforderten Ressourcen wiedererlangt hat.
Gegenseitiger Ausschluss
Mutex ist die vollständige Bezeichnung für Mutex. Es handelt sich um eine spezielle Art von Binärsperre. Semaphor Dies dient der Zugriffskontrolle auf eine gemeinsam genutzte Ressource. Es beinhaltet einen Mechanismus zur Prioritätsvererbung, um Probleme mit erweiterter Prioritätsinversion zu vermeiden und blockiert Aufgaben mit höherer Priorität so kurz wie möglich.
Gemeinsam genutzte Ressourcen wie schreibgeschützte Dateien führen nie zu Deadlocks, Ressourcen wie Drucker und Bandlaufwerke benötigen jedoch den exklusiven Zugriff durch einen einzigen Prozess.
Halten und warten
In diesem Fall müssen Prozesse daran gehindert werden, eine oder mehrere Ressourcen zu belegen, während sie gleichzeitig auf eine oder mehrere andere Ressourcen warten.
Zirkuläres Warten
Diese Methode erzwingt eine vollständige Ordnung aller Ressourcentypen. Die Vermeidung von Zirkelbelegungen erfordert zudem, dass jeder Prozess Ressourcen in aufsteigender Reihenfolge anfordert.
Deadlock-Vermeidung Algorithms
Es ist besser, einen Deadlock zu vermeiden, anstatt erst nach seinem Auftreten Maßnahmen zu ergreifen. Zur Vermeidung sind zusätzliche Informationen erforderlich, beispielsweise zur Ressourcennutzung. Ein hilfreiches Modell zur Deadlock-Vermeidung besteht darin, dass jeder Prozess die maximale Anzahl der benötigten Ressourcen jedes Typs angibt.
Vermeidung Algorithms
Der Deadlock-Vermeidungsalgorithmus bewertet dynamisch den Ressourcenzuweisungsstatus, sodass eine zirkuläre Wartesituation niemals auftreten kann.
Für eine einzelne Instanz eines Ressourcentyps:
- Verwenden Sie einen Ressourcenzuordnungsgraphen.
- Ein Zyklus im Graphen ist notwendig und hinreichend für eine Verklemmung.
Bei mehreren Instanzen eines Ressourcentyps:
- Ein Zyklus ist zwar notwendig, aber nicht hinreichend für eine Verklemmung.
- Verwenden Sie die Banker-Algorithmus.
Unterschied zwischen Verhungern und Deadlock
Hier einige wichtige Unterschiede zwischen Deadlock und Starvation:
| Deadlock | Verhungern |
|---|---|
| Eine Deadlock-Situation entsteht, wenn einer der Prozesse blockiert wird. | Bei einer Verhungerung der Prozesse handelt es sich um eine Situation, in der alle Prozesse mit niedriger Priorität blockiert werden, während die Prozesse mit hoher Priorität ausgeführt werden. |
| Deadlock ist ein unendlicher Prozess. | Hungern ist ein langer Prozess, aber kein endloser. |
| Jede Pattsituation führt unweigerlich zu Hungersnot. | Nicht jede Hungersnot führt zwangsläufig zu einer Pattsituation. |
| Ein Deadlock entsteht durch gegenseitigen Ausschluss, Halten und Warten, fehlende Präemption und zirkuläres Warten, die gleichzeitig auftreten. | Dies geschieht aufgrund unkontrollierter Prioritätensetzung und mangelhaften Ressourcenmanagements. |
Vorteile von Deadlock
Hier die Vorteile der Verwendung der Deadlock-Behandlungsmethode:
- Diese Vorgehensweise eignet sich gut für Prozesse, die eine einzelne Aktivitätsphase durchlaufen.
- Bei einer Deadlock-Situation ist keine Präemption erforderlich.
- Es handelt sich um eine praktische Methode, wenn sie auf Ressourcen angewendet wird, deren Zustand leicht gespeichert und wiederhergestellt werden kann.
- Die Durchsetzung ist über Prüfungen zur Kompilierzeit möglich.
- Es sind keine Laufzeitberechnungen erforderlich, da das Problem bereits im Systemdesign gelöst ist.
Nachteile von Deadlock
Hier sind die Nachteile der Verwendung der Deadlock-Behandlungsmethode:
- Es verzögert den Prozessstart.
- Prozesse müssen ihren zukünftigen Ressourcenbedarf im Voraus kennen.
- Es greift häufiger vor als nötig.
- Es unterbindet inkrementelle Ressourcenanforderungen.
- Es birgt inhärente Präemptionsverluste.


