Was ist der Unterschied zwischen Deadlock und Livelock?
Kann jemand bitte erklären Sie mit Beispielen (code -) was ist der Unterschied zwischen deadlock und livelock?
Kommentar zu dem Problem
Gibt es code-Beispiele, die unter "Was ist der Unterschied zwischen deadlock und livelock deadlock, eine unendliche Rekursion und Hunger".
InformationsquelleAutor der Frage macindows | 2011-05-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entnommen http://en.wikipedia.org/wiki/Deadlock:
InformationsquelleAutor der Antwort mah
Livelock
Den wichtigsten Unterschied zwischen livelock und deadlock ist, dass threads nicht blockiert werden, stattdessen werden Sie versuchen, darauf zu reagieren, um sich gegenseitig kontinuierlich.
In diesem Bild, die beiden Kreise (von threads oder Prozessen) versuchen Raum zu geben, die andere durch eine Bewegung nach Links und rechts. Aber Sie können sich nicht bewegen.
InformationsquelleAutor der Antwort Burusothman
Alle den Inhalt und die Beispiele hier sind aus
Operating Systems: Internals and Design Principles
William Aufschübe
8º Edition
Deadlock: Eine situation, in der zwei oder mehr Prozesse nicht fortfahren, weil jeder wartet, dass einer den anderen etwas zu tun.
Beispiel: betrachten wir zwei Prozesse P1 und P2 und zwei Ressourcen R1 und R2. Angenommen, dass jeder Prozess braucht Zugang zu beiden Ressourcen zur Durchführung von Teil seine Funktion. Dann ist es möglich, sich folgende situation vor: das OS weist R1, P2, R2 P1. Jeder Prozess wartet für eine der beiden Ressourcen. Weder wird die Ressource freigeben, die es bereits besitzt, bis es erworben hat
die andere Ressource und führte die Funktion, die sowohl Ressourcen. Die beiden
Prozesse festgefahren sind
Livelock: Eine situation, in der zwei oder mehr Prozesse, die ständig Ihren Status ändern in Reaktion auf änderungen in den anderen Prozess(en) ohne sinnvolle Arbeit:
Hunger: Eine situation, in der ein ausführbarer Prozess wird übersehen, auf unbestimmte Zeit durch den scheduler; es ist zwar in der Lage zu gehen, es ist nie gewählt.
Angenommen, dass die drei Prozesse (P1, P2, P3), jede erfordert eine regelmäßige Zugriff auf die Ressource R. Betrachten Sie die situation, in der P1 ist im Besitz der Ressource ist, und sowohl P2 und P3 sind verzögert, wartet auf die Ressource. Wenn P1 beendet seinen kritischen Abschnitt, entweder P2 oder P3 sollte gestattet werden, Zugang zu R. davon Ausgehen, dass das OS Zugriff auf P3 und P1 wieder zugreifen muss, bevor P3 schließt seine kritischen Abschnitt. Wenn das OS den Zugang zu P1 nach P3 beendet hat, und anschließend abwechselnd Zugriff gewährt, P1 und P3, dann P2 können auf unbestimmte Zeit keinen Zugriff auf die Ressource, auch wenn es keine deadlock-situation.
ANHANG A - THEMEN IN PARALLELITÄT
Beispiel Deadlock
Wenn beide Prozesse Ihre flags auf true, bevor Sie entweder ausgeführt hat, die der while-Anweisung, dann wird jeder denken, dass der andere eingegeben hat, seinen kritischen Abschnitt, wodurch deadlock.
Livelock Beispiel
[...] betrachten Sie die folgende Sequenz von Ereignissen:
Diese Reihenfolge könnte endlos erweitert werden, und weder der Prozess konnte Sie, seinen kritischen Abschnitt. Streng genommen ist das nicht deadlock, weil jede änderung in der relativen Geschwindigkeit der beiden Prozesse brechen dieses Zyklus und erlauben es, geben Sie den kritischen Abschnitt. Diese Bedingung wird als bezeichnet livelock. Daran erinnern, dass deadlock tritt auf, wenn eine Reihe von Prozessen, die Wünsche zu geben, mit Ihren kritischen Abschnitten, aber kein Prozess gelingen kann. Mit livelock, ist es möglich, Sequenzen von Hinrichtungen, die erfolgreich sind, aber es ist auch möglich, beschreiben Sie eine oder mehrere der Ausführung von Sequenzen, in denen kein Prozess, der jemals in seinen kritischen Abschnitt.
InformationsquelleAutor der Antwort Daniel Frederico Lins Leite
DEADLOCK
Deadlock ist ein Zustand, in dem eine Aufgabe wartet
auf unbestimmte Zeit für die Bedingungen, die nie sein kann
zufrieden
- Aufgabe, die Ansprüche, die exklusive Kontrolle über freigegebene
Ressourcen
- Aufgabe hält Ressourcen während der Wartezeit für andere
Ressourcen werden freigegeben
- Aufgaben können nicht gezwungen werden, relinguish Ressourcen
- Runder warten-Bedingung erfüllt ist
LIVELOCK
Livelock-Bedingungen können entstehen, wenn zwei oder
weitere Aufgaben abhängen, und verwenden Sie einige der
Ressource verursacht eine zirkuläre Abhängigkeit
Zustand, in dem diese Aufgaben weiter
läuft ewig, so blockiert alle niedrigeren
priority level-Aufgaben ausgeführt werden (diese
niedriger Priorität Aufgaben-Erfahrung Bedingung
genannt hungern)
InformationsquelleAutor der Antwort Deepak Lamichhane
Vielleicht diese zwei Beispiele veranschaulichen Ihnen den Unterschied zwischen einem deadlock und einem livelock:
Java-Beispiel für ein deadlock:
Beispiel-Ausgabe:
Java-Beispiel für einen livelock:
Beispiel-Ausgabe:
Beide Beispiele Kraft, die threads zu erwerben, die sperren in unterschiedlicher Reihenfolge.
Während der deadlock wartet, bis die andere Sperre,
der livelock nicht wirklich warten - es versucht verzweifelt, die Sperre ohne die chance zu bekommen, es. Jeder Versuch verbraucht CPU-Zyklen.
InformationsquelleAutor der Antwort mmirwaldt
Mit Referenz : http://operatingsystemgeeks.blogspot.in/
Beispiel für deadlock :
Gegenseitiger Ausschluss-Bedingung gilt, da nur ein Fahrzeug auf einem Abschnitt der Straße zu einer Zeit.
Hold-and-wait-Bedingung gilt, da jedes Fahrzeug besetzen einen Abschnitt der Straße, und darauf warten, sich zu bewegen auf zum nächsten Abschnitt der Straße.
Nicht-präemptiven Zustand gilt, da ein Abschnitt der Straße, die einen Abschnitt der Straße, die besetzt ist von einem Fahrzeug nicht weggenommen werden kann.
Zirkuläre Wartebedingung gilt, da jedes Fahrzeug wartet auf das nächste Fahrzeug zu bewegen. Das heißt, jedes Fahrzeug in den Verkehr zu warten, für einen Abschnitt der Straße statt, durch das nächste Fahrzeug in den Verkehr.
InformationsquelleAutor der Antwort Rajendra