Livelock: Was ist, Beispiel, Unterschied zu Deadlock
โก Intelligente Zusammenfassung
Livelock ist eine Situation der Parallelverarbeitung, in der Prozesse stรคndig ihre Zustรคnde in Reaktion aufeinander รคndern, aber keinen wirklichen Fortschritt erzielen, aktiv bleiben und CPU-Zyklen verbrauchen, ohne jemals ihre Aufgaben zu erledigen oder blockiert zu werden.

Was ist Livelock?
A Livelock ist eine Situation, in der eine Anfrage fรผr eine exklusive Sperre wiederholt abgelehnt wird, da es zu viele รberschneidungen kommt.ping Gemeinsame Sperren stรถren sich stรคndig gegenseitig. Die Prozesse รคndern stรคndig ihren Status, was sie daran hindert, ihre Aufgaben abzuschlieรen.
Beispiele fรผr Livelock
Beispiel 1:
Das einfachste Beispiel fรผr eine Livelock-Situation sind zwei Personen, die sich in einem Korridor gegenรผberstehen und jeweils zur Seite treten, um die andere passieren zu lassen. Sie bewegen sich stรคndig hin und her, ohne voranzukommen, da sie sich gleichzeitig in dieselbe Richtung bewegen. Dabei kreuzen sie sich nie.
Beispiel 2:
Im obigen Bild benรถtigt jeder der beiden Prozesse zwei Ressourcen und verwendet primitives Polling, um die benรถtigten Sperren zu erhalten. Schlรคgt ein Versuch fehl, wird er wiederholt.
- Prozess A hรคlt Ressource Y
- Prozess B enthรคlt Ressource X
- Prozess A benรถtigt Ressource X
- Prozess B benรถtigt Ressource Y
Angenommen, Prozess A wird zuerst ausgefรผhrt und erhรคlt Ressource X, und anschlieรend wird Prozess B ausgefรผhrt und erhรคlt Ressource Y. Unabhรคngig davon, welcher Prozess zuerst ausgefรผhrt wird, erzielt keiner der beiden weitere Fortschritte.
Keiner der beiden Prozesse ist jedoch blockiert. Sie verbrauchen wiederholt CPU-Ressourcen, ohne Fortschritte zu erzielen, und werden dennoch nie durch eine Verarbeitungsblockade unterbrochen.
Daher handelt es sich bei dieser Situation nicht um eine DeadlockWeil kein einziger Prozess blockiert ist, befinden wir uns stattdessen in einer Situation, die einem Deadlock gleichkommt und LIVELOCK genannt wird.
Was fรผhrt zu Livelock?
Livelock ist an die Anzahl der vom System zugelassenen Prozesse gekoppelt, die durch die Gesamtzahl der Eintrรคge in der Prozesstabelle definiert ist. Diese Eintrรคge in der Prozesstabelle werden daher als begrenzte Ressourcen behandelt. Wenn Prozesse wiederholt versuchen, diese begrenzten Ressourcen zu beanspruchen und sich dabei gegenseitig den Vortritt lassen, kommt keiner von ihnen voran, und das System gerรคt in einen Livelock.
Was ist Deadlock?
A Deadlock Ein Deadlock ist eine Situation in einem Betriebssystem, in der ein Prozess in einen Wartezustand gerรคt, weil ein anderer wartender Prozess die benรถtigte Ressource belegt. Deadlocks sind ein hรคufiges Problem in Multiprocessing-Systemen, bei denen mehrere Prozesse eine bestimmte Art von sich gegenseitig ausschlieรender Ressource gemeinsam nutzen, die als Softlock oder Software-Lock bezeichnet wird.
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 zu einer Blockade kommt, kann diese leicht behoben werden, indem ein Fahrzeug zurรผcksetzt (Ressourcen vorwegnimmt und zurรผckrollt).
- Bei einer Blockade mรผssen mรถglicherweise mehrere Fahrzeuge rรผckwรคrts fahren.
- Daher ist Verhungern mรถglich.
Beispiel fรผr einen Deadlock
Was ist Hunger?
Ressourcenverhungern ist eine Situation, in der Prozesse mit niedriger Prioritรคt blockiert werden, wรคhrend Prozesse mit hoher Prioritรคt weiterlaufen. In jedem System entstehen dynamisch Anfragen nach Ressourcen mit hoher und niedriger Prioritรคt. Daher ist eine Richtlinie erforderlich, die festlegt, welche Anfragen wann bedient werden.
Bei manchen Algorithmen kann es vorkommen, dass bestimmte Prozesse den gewรผnschten Dienst nicht erhalten, obwohl sie nicht blockiert sind. Ressourcenmangel tritt auf, wenn einige Threads gemeinsam genutzte Ressourcen รผber einen lรคngeren Zeitraum unzugรคnglich machen.
Beispiel fรผr Hunger
Ein Objekt bietet beispielsweise eine synchronisierte Methode, 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, oft blockiert.
Unterschied zwischen Deadlock, Starvation und Livelock
- Ein Deadlock ist eine Situation, die in einem Betriebssystem auftritt, wenn ein Prozess in einen Wartezustand eintritt, weil die angeforderte Ressource von einem anderen wartenden Prozess belegt ist.
- Ein Livelock ist dagegen fast identisch mit einem Deadlock, nur dass sich die Zustรคnde der an einem Livelock beteiligten Prozesse stรคndig gegenseitig รคndern, ohne dass einer davon Fortschritte macht.
- Livelock ist also ein besonderer Fall von Ressourcenmangel.


