Livelock: Was ist zum Beispiel der Unterschied zum Deadlock?

Inhaltsverzeichnis:

Anonim

Was ist Livelock?

Ein Livelock ist eine Situation, in der eine Anforderung für eine exklusive Sperre wiederholt abgelehnt wird, da sich viele überlappende gemeinsam genutzte Sperren gegenseitig stören. Die Prozesse ändern ständig ihren Status, wodurch sie die Aufgabe nicht mehr ausführen können. Dies verhindert weiter, dass sie die Aufgabe erledigen.

In diesem Betriebssystem-Tutorial lernen Sie:

  • Was ist Livelock?
  • Beispiele für Livelock
  • Was führt zu Livelock?
  • Was ist Deadlock?
  • Beispiel für Deadlock
  • Was ist Hunger?
  • Unterschied zwischen Deadlock, Hunger und Livelock

Beispiele für Livelock

Beispiel 1:

Ein einfachstes Beispiel für Livelock wären zwei Personen, die sich in einem Korridor von Angesicht zu Angesicht treffen und beide zur Seite gehen, um den anderen passieren zu lassen. Sie bewegen sich am Ende von einer Seite zur anderen, ohne Fortschritte zu machen, da sie sich zu der Zeit auf die gleiche Weise bewegen. Hier kreuzen sie sich nie.

Beispiel 2:

Wie Sie im obigen Bild sehen können, benötigt jeder der beiden angegebenen Prozesse zwei Ressourcen und verwendet die Registrierung für die Eingabe primitiver Abfragen, um zu versuchen, die für sie erforderlichen Sperren zu erhalten. Wenn der Versuch fehlschlägt, funktioniert die Methode erneut.

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

Angenommen, Prozess A wird zuerst ausgeführt und erfasst die Datenressource X, und dann wird Prozess B ausgeführt und erfasst die Ressource Y, unabhängig davon, welcher Prozess zuerst ausgeführt wird, keiner von ihnen schreitet weiter voran.

Keiner der beiden Prozesse ist jedoch blockiert. Sie verbrauchen wiederholt CPU-Ressourcen, ohne dass Fortschritte erzielt werden, stoppen jedoch auch einen Verarbeitungsblock.

Daher ist diese Situation nicht die eines Deadlocks, da kein einziger Prozess blockiert ist, aber wir sehen uns der Situation gegenüber, die einem Deadlock entspricht, 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 Prozesstabellen-Slots als endliche Ressourcen bezeichnet werden.

Was ist Deadlock?

Ein Deadlock ist eine Situation, die im Betriebssystem auftritt, wenn ein Prozess in einen Wartezustand wechselt, weil ein anderer Warteprozess die angeforderte Ressource enthält. Deadlock ist ein häufiges Problem bei der Mehrfachverarbeitung, bei der mehrere Prozesse einen bestimmten Typ einer sich gegenseitig ausschließenden Ressource gemeinsam nutzen, der als Soft Lock oder Software bezeichnet wird.

Beispiel für Deadlock

  • Ein reales Beispiel wäre der Verkehr, der nur in eine Richtung verläuft.
  • Hier wird eine Brücke als Ressource betrachtet.
  • Wenn also ein Deadlock auftritt, kann dies leicht behoben werden, wenn ein Auto gesichert wird (Ressourcen vorenthalten und Rollback durchführen).
  • Möglicherweise müssen mehrere Autos gesichert werden, wenn eine Deadlock-Situation auftritt.
  • Hunger ist also möglich.
Beispiel für einen Deadlock

Was ist Hunger?

Hunger ist eine Situation, in der alle Prozesse mit niedriger Priorität blockiert wurden und die Prozesse mit hoher Priorität fortgesetzt werden. In jedem System werden Anforderungen für Ressourcen mit hoher / niedriger Priorität weiterhin dynamisch ausgeführt. Dabei ist eine Richtlinie erforderlich, um zu entscheiden, wer wann Unterstützung erhält.

Bei Verwendung einiger Algorithmen werden einige Prozesse möglicherweise nicht den gewünschten Service erhalten, obwohl sie nicht blockiert sind. Hunger 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, deren Rückkehr wahrscheinlich lange dauert. Wenn ein Thread diese Methode häufig verwendet, werden andere Threads, die ebenfalls häufigen synchronisierten Zugriff auf dasselbe Objekt benötigen, häufig blockiert.

Unterschied zwischen Deadlock, Hunger und Livelock

  • Ein Deadlock ist eine Situation, die im Betriebssystem auftritt, wenn ein Prozess in einen Wartezustand versetzt wird, weil die angeforderte Ressource von einem anderen Warteprozess gehalten wird.
  • Ein Livelock hingegen ähnelt fast einem Deadlock, mit der Ausnahme, dass sich die Zustände der Prozesse, die an einem Livelock beteiligt sind, immer wieder ändern und sich nicht weiterentwickeln.
  • Livelock ist also ein einzigartiger Fall von Ressourcenmangel.

Zusammenfassung:

  • Definition: Ein Livelock ist eine Situation, in der eine Anforderung für eine exklusive Sperre wiederholt abgelehnt wird, da sich viele überlappende gemeinsam genutzte 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 Prozess in einen Wartezustand wechselt, weil ein anderer Warteprozess die angeforderte Ressource enthält.
  • 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 von Angesicht zu Angesicht treffen und beide zur Seite gehen, um den anderen passieren zu lassen.
  • Hunger ist eine Situation, in der alle Prozesse mit niedriger Priorität blockiert wurden und die Prozesse mit hoher Priorität fortgesetzt werden.