Livelock: Was ist, Beispiel, Unterschied zu Deadlock

Was ist Livelock?

A Livelock Dies ist eine Situation, in der eine Anfrage nach einer exklusiven Sperre wiederholt abgelehnt wird, da sich viele überlappende gemeinsame Sperren gegenseitig stören. Die Prozesse ändern ständig ihren Status, was sie zusätzlich daran hindert, die Aufgabe abzuschließen. Dies hindert sie zusätzlich daran, die Aufgabe zu erledigen.

Beispiele für Livelock

Beispiel 1:

Ein einfachstes Beispiel für Livelock wären zwei Personen, die sich in einem Korridor gegenüberstehen und beide zur Seite gehen, um den anderen passieren zu lassen. Am Ende bewegen sie sich von einer Seite zur anderen, ohne Fortschritte zu machen, da sie sich jeweils in die gleiche Richtung bewegen. Hier kreuzen sie sich nie.

Beispiel 2:

Beispiele für Livelock

Im obigen Bild sehen Sie, dass jeder der beiden angegebenen Prozesse zwei Ressourcen benötigt und mithilfe der einfachen Abfrage-Eingaberegistrierung versucht, die für ihn erforderlichen Sperren zu erhalten. Schlägt der Versuch fehl, funktioniert die Methode erneut.

  1. Prozess A hält Y-Ressource
  2. Prozess B enthält Ressource X
  3. Prozess A erfordert X-Ressource
  4. Prozess B erfordert Y-Ressource

Angenommen, Prozess A wird zuerst ausgeführt und erfasst die Datenressource

Allerdings wird keiner der beiden Prozesse blockiert. Sie verbrauchen wiederholt CPU-Ressourcen, ohne dass Fortschritte erzielt werden, stoppen aber auch jeden Verarbeitungsblock.

Daher ist diese Situation nicht die eines Deadlock denn es gibt keinen einzigen Prozess, der blockiert ist, sondern wir sind mit einer Situation konfrontiert, die einem Deadlock gleichkommt, nämlich LIVELOCK.

Was führt zu Livelock?

Livelock tritt auf, wenn die Gesamtzahl der zulässigen Prozesse in einem bestimmten System durch die Gesamtzahl der Einträge in der Prozesstabelle definiert werden soll. Daher sollten Prozesstabellenslots als endliche Ressourcen bezeichnet werden.

Was ist Deadlock?

Ein Deadlock ist eine Situation, die in einem Betriebssystem auftritt, wenn ein beliebiger Prozess in einen Wartezustand gerät, 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 teilen, 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 Hunger?

Unter Hunger versteht man eine Situation, in der alle Prozesse mit niedriger Priorität blockiert werden und die Prozesse mit hoher Priorität fortgesetzt werden. In jedem System erfolgen Anfragen nach Ressourcen mit hoher/niedriger Priorität weiterhin dynamisch. Dabei ist es erforderlich, dass bestimmte Richtlinien entscheiden, wer wann Unterstützung erhält.

Bei manchen Algorithmen erhalten manche Prozesse möglicherweise nicht die gewünschte Leistung, obwohl sie nicht blockiert sind. Starvation tritt auf, wenn einige Threads gemeinsam genutzte Ressourcen für einen längeren Zeitraum nicht verfügbar machen.

Beispiel für Hunger

Beispielsweise bietet ein Objekt eine synchronisierte Methode an, deren Rückgabe wahrscheinlich lange dauert. Wenn ein Thread diese Methode häufig verwendet, werden andere Threads, die ebenfalls häufig synchronisierten Zugriff auf dasselbe Objekt benötigen, häufig blockiert.

Unterschied zwischen Deadlock, Starvation und Livelock

  • Ein Deadlock ist eine Situation, die im Betriebssystem auftritt, wenn ein beliebiger Prozess in einen Wartezustand wechselt, weil die angeforderte Ressource von einem anderen wartenden Prozess belegt ist.
  • Ein Livelock hingegen ist fast ähnlich einem Deadlock, mit dem Unterschied, dass sich die Zustände der an einem Livelock beteiligten Prozesse ständig gegenseitig ändern, ohne dass es zu einem Fortschritt kommt.
  • Livelock ist also ein einzigartiger Fall von Ressourcenknappheit.

Zusammenfassung

  • Definition: Ein Livelock ist eine Situation, in der eine Anfrage nach einer exklusiven Sperre wiederholt abgelehnt wird, da sich viele überlappende gemeinsame Sperren gegenseitig stören.
  • Livelock tritt auf, wenn die Gesamtzahl der zulässigen Prozesse in einem bestimmten System durch die Gesamtzahl der Einträge in der Prozesstabelle definiert werden soll
  • Ein Deadlock ist eine Situation, die im Betriebssystem auftritt, wenn ein beliebiger Prozess in einen Wartezustand wechselt, weil ein anderer wartender Prozess die angeforderte Ressource blockiert.
  • Ein reales Beispiel wäre der Verkehr, der nur in eine Richtung verläuft.
  • Ein Beispiel für Livelock wären zwei Personen, die sich in einem Korridor gegenüberstehen und beide zur Seite gehen, um den anderen passieren zu lassen.
  • Unter Hunger versteht man eine Situation, in der alle Prozesse mit niedriger Priorität blockiert werden und die Prozesse mit hoher Priorität fortgesetzt werden.