Deadlock in Operating-System: Was ist zirkuläres Warten (Beispiele)

Was ist Deadlock?

Deadlock ist eine Situation, die in einem Betriebssystem auftritt, wenn ein beliebiger Prozess in einen Wartezustand wechselt, weil ein anderer wartender Prozess die angeforderte Ressource hält. Deadlock ist ein häufiges Problem bei Multi-Processing, bei dem mehrere Prozesse einen bestimmten Typ sich gegenseitig ausschließender Ressource gemeinsam nutzen, der als Softlock oder Software bezeichnet wird.

Beispiel für einen Deadlock

  • Ein reales Beispiel wäre der Verkehr, der nur in eine Richtung verläuft.
  • Hier wird eine Brücke als Ressource betrachtet.
  • Wenn es also zu einem Deadlock kommt, kann dieser leicht behoben werden, indem ein Auto zurückfährt (Ressourcen vorwegnehmen und zurücksetzen).
  • Bei einer Blockade müssen möglicherweise mehrere Fahrzeuge rückwärts fahren.
  • Hungern ist also möglich.
Beispiel für einen Deadlock
Beispiel für einen Deadlock

Was ist zirkuläres Warten?

Ein Prozess wartet auf die Ressource, die vom zweiten Prozess gehalten wird, der ebenfalls auf die Ressource wartet, die vom dritten Prozess gehalten wird usw. Dies wird so lange fortgesetzt, bis der letzte Prozess auf eine Ressource wartet, die vom ersten Prozess gehalten wird. Dadurch entsteht eine kreisförmige Kette.

Beispielsweise wird Prozess A Ressource B zugewiesen, da er Ressource A anfordert. Auf die gleiche Weise wird Prozess B Ressource A zugewiesen und er fordert Ressource B an. Dadurch wird eine kreisförmige Warteschleife erstellt.

Beispiel für zirkuläres Warten

Ein Computer hat beispielsweise drei USB-Laufwerke und drei Prozesse. Jeder der drei Prozesse kann eines der USB-Laufwerke halten. Wenn also jeder Prozess ein weiteres Laufwerk anfordert, kommt es bei den drei Prozessen zu einer Deadlock-Situation, da jeder Prozess darauf wartet, dass das gerade verwendete USB-Laufwerk freigegeben wird. Dies führt zu einer kreisförmigen Kette.

Beispiel für zirkuläres Warten

Beispiel für zirkuläres Warten

Deadlock-Erkennung im Betriebssystem

Ein Deadlock kann vom Ressourcenplaner erkannt werden. Ein Ressourcenplaner hilft dem Betriebssystem, alle Ressourcen zu verfolgen, die verschiedenen Prozessen zugewiesen sind. Wenn also ein Deadlock erkannt wird, kann er mit den folgenden Methoden behoben werden:

Deadlock-Verhinderung im Betriebssystem

Es ist wichtig, einen Deadlock zu verhindern, bevor er auftreten kann. Das System prüft jede Transaktion vor ihrer Ausführung, um sicherzustellen, dass es nicht zu Deadlock-Situationen kommt. So kann selbst eine kleine Änderung dazu führen, dass ein Vorgang, der in Zukunft zu einem Deadlock führen kann, nicht mehr ausgeführt wird.

Dabei handelt es sich um eine Reihe von Methoden, um sicherzustellen, dass mindestens eine der Bedingungen nicht erfüllt sein kann.

Keine vorbeugenden Maßnahmen

Keine Vorkaufsrecht – Eine Ressource kann nur freiwillig von dem Prozess, der sie hält, freigegeben werden, nachdem dieser Prozess seine Aufgabe abgeschlossen hat

  • Wenn ein Prozess, der einige Ressourcen enthält, eine andere Ressource anfordert, die ihm nicht sofort zugewiesen werden kann, werden in diesem Fall alle Ressourcen freigegeben.
  • Für vorzeitig freigegebene Ressourcen ist die Liste der Ressourcen eines wartenden Prozesses erforderlich.
  • Der Prozess wird nur dann neu gestartet, wenn er seine alte Ressource und eine neue, die er anfordert, wiedererlangen kann.
  • Wenn der Prozess eine andere Ressource anfordert und diese verfügbar ist, wurde sie dem anfordernden Prozess übergeben.
  • Wenn es von einem anderen Prozess gehalten wird, der auf eine andere Ressource wartet, geben wir es frei und geben es an den anfordernden Prozess weiter.

Gegenseitiger Ausschluss

Gegenseitiger Ausschluss ist eine vollständige Form von Mutex. Es handelt sich um einen speziellen Typ eines binären Semaphors, der zur Steuerung des Zugriffs auf die gemeinsam genutzte Ressource verwendet wird. Es enthält einen Mechanismus zur Prioritätsvererbung, um erweiterte Probleme bei der Prioritätsumkehr zu vermeiden. Dadurch können aktuelle Aufgaben mit höherer Priorität so kurz wie möglich im blockierten Zustand gehalten werden.

Gemeinsam genutzte Ressourcen wie schreibgeschützte Dateien führen nie zu Deadlocks, aber Ressourcen wie Drucker und Bandlaufwerke erfordern den exklusiven Zugriff durch einen einzelnen Prozess.

Halten und warten

In diesem Zustand muss verhindert werden, dass Prozesse eine oder mehrere Ressourcen halten, während sie gleichzeitig auf eine oder mehrere andere warten.

Zirkuläres Warten

Es erzwingt eine Gesamtordnung aller Ressourcentypen. Zirkuläres Warten erfordert außerdem, dass jeder Prozess Ressourcen in aufsteigender Reihenfolge der Aufzählung anfordert.

Deadlock-Vermeidung Algorithms

Es ist besser, einen Deadlock zu vermeiden, als nach dem Auftreten des Deadlocks Maßnahmen zu ergreifen. Dazu sind zusätzliche Informationen erforderlich, beispielsweise wie Ressourcen verwendet werden sollen. Die Vermeidung von Deadlocks ist das einfachste und nützlichste Modell, bei dem jeder Prozess die maximale Anzahl an Ressourcen jedes Typs deklariert, die er möglicherweise benötigt.

Vermeidung Algorithms

Der Algorithmus zur Vermeidung von Deadlocks unterstützt Sie bei der dynamischen Bewertung des Status der Ressourcenzuweisung, sodass es nie zu einer zyklischen Wartesituation kommen kann.

Eine einzelne Instanz eines Ressourcentyps.

  • Verwenden Sie ein Ressourcenzuteilungsdiagramm
  • Es sind Zyklen erforderlich, die für Deadlock ausreichen

Mehrere Instanzen eines Ressourcentyps.

  • Zyklen sind für einen Deadlock notwendig, reichen aber nie aus.
  • verwendet die Banker-Algorithmus

Unterschied zwischen Verhungern und Deadlock

Hier sind einige wichtige Unterschiede zwischen Deadlock und Starvation:

Deadlock Verhungern
Die Deadlock-Situation tritt auf, wenn einer der Prozesse blockiert wird. Unter Hunger versteht man eine Situation, in der alle Prozesse mit niedriger Priorität blockiert werden und die Prozesse mit hoher Priorität ausgeführt werden.
Deadlock ist ein unendlicher Prozess. Hungern ist ein langes Warten, aber kein endloser Prozess.
In jedem Deadlock herrscht Hunger. Nicht jede Hungersnot führt zwangsläufig zu einer Sackgasse.
Es kommt zu einem Deadlock, dann zu gegenseitigem Ausschluss, Halten und Warten. Hier treten Präemption und zirkuläres Warten nicht gleichzeitig auf. Dies geschieht aufgrund einer unkontrollierten Prioritäts- und Ressourcenverwaltung.

Vorteile von Deadlock

Hier sind die Vorteile der Verwendung der Deadlock-Methode

  • Diese Situation funktioniert gut für Prozesse, die einen einzelnen Aktivitätsstoß ausführen
  • Für Deadlock ist keine Präemption erforderlich.
  • Praktische Methode, wenn sie auf Ressourcen angewendet wird, deren Zustand einfach gespeichert und wiederhergestellt werden kann
  • Durch Überprüfungen zur Kompilierzeit durchsetzbar
  • Benötigt keine Laufzeitberechnung, da das Problem im Systemdesign gelöst wird

Nachteile von Deadlock

Hier sind die Nachteile der Verwendung der Deadlock-Methode

  • Verzögert die Prozessinitiierung
  • Prozesse müssen den zukünftigen Ressourcenbedarf kennen
  • Kommt öfter vor als nötig
  • Verbietet inkrementelle Ressourcenanforderungen
  • Inhärente Vorkaufsverluste.

Zusammenfassung

  • Deadlock-Definition: Es handelt sich um eine Situation, die auftritt in OS wenn ein Prozess in den Wartezustand wechselt, weil ein anderer Warteprozess die angeforderte Ressource hält
  • Zirkuläres Warten tritt auf, wenn ein Prozess auf die Ressource wartet, die vom zweiten Prozess gehalten wird, der ebenfalls auf die Ressource wartet, die vom dritten Prozess usw. gehalten wird.
  • Das Auftreten eines Deadlocks kann durch den Ressourcenplaner erkannt werden.
  • Es ist wichtig, einen Deadlock zu verhindern, bevor er auftreten kann.
  • Eine Ressource kann nur freiwillig von dem Prozess freigegeben werden, der sie hält, nachdem dieser Prozess seine Aufgabe abgeschlossen hat.
  • Gegenseitiger Ausschluss ist eine vollständige Form von Mutex. Es handelt sich um eine spezielle Art von Binärdatei Semaphor die zur Steuerung des Zugriffs auf die gemeinsam genutzte Ressource verwendet wird.
  • „Halten und Warten“ ist ein Zustand, in dem Prozesse daran gehindert werden müssen, eine oder mehrere Ressourcen zu halten, während gleichzeitig auf eine oder mehrere andere gewartet wird.
  • Die Vermeidung von Deadlocks ist das einfachste und nützlichste Modell, bei dem jeder Prozess die maximale Anzahl an Ressourcen jedes Typs deklariert, die er möglicherweise benötigt.
  • Der Algorithmus zur Vermeidung von Deadlocks unterstützt Sie bei der dynamischen Bewertung des Status der Ressourcenzuweisung, sodass es nie zu einer zyklischen Wartesituation kommen kann.
  • Ein Deadlock ist ein unendlicher Prozess, wohingegen ein Starvation-Prozess zwar ein langes Warten, aber kein unendlicher Prozess ist.