Livelock: Vad är, Exempel, Difference med Deadlock
Vad är Livelock?
A livelock är en situation där en begäran om ett exklusivt lås nekas upprepade gånger, eftersom många överlappande delade lås fortsätter att störa varandra. Processerna fortsätter att ändra sin status, vilket ytterligare hindrar dem från att slutföra uppgiften. Detta hindrar dem ytterligare från att slutföra uppgiften.
Exempel på Livelock
Exempel 1:
Ett enklaste exempel på Livelock skulle vara två personer som möts ansikte mot ansikte i en korridor, och båda flyttar sig åt sidan för att låta den andra passera. Det slutar med att de rör sig från sida till sida utan att göra några framsteg eftersom de rör sig på samma sätt vid tillfället. Här korsar de aldrig varandra.
Exempel 2:
Du kan se i bilden ovan att var och en av de två givna processerna behöver två resurser, och de använder det primitiva polling enter-registret för att försöka skaffa de lås som behövs för dem. Om försöket misslyckas fungerar metoden igen.
- Process A håll Y-resurs
- Process B innehåller resurs X
- Process A kräver X-resurs
- Process B kräver Y-resurs
Om vi antar att process A körs först och förvärvar dataresurs X och sedan process B körs och förvärvar resurs Y, oavsett vilken process som körs först, ingen av dem fortsätter.
Ingen av de två processerna är dock blockerade. De använder upp CPU-resurser upprepade gånger utan att några framsteg görs men stoppar också något bearbetningsblock.
Därför är denna situation inte den för en dödläge eftersom det inte finns en enda process som är blockerad, utan vi står inför situationen något som motsvarar dödläge, vilket är LIVELOCK.
Vad leder till Livelock?
Livelock uppstår när det totala antalet tillåtna processer i ett specifikt system ska definieras av det totala antalet poster i processtabellen. Därför bör processtabellsluckor kallas ändliga resurser.
Vad är Deadlock?
Ett dödläge är en situation som uppstår i OS när någon process går in i ett vänteläge eftersom en annan väntande process håller den efterfrågade resursen. Deadlock är ett vanligt problem inom multi-processing där flera processer delar en specifik typ av ömsesidigt uteslutande resurs som kallas mjuklås eller mjukvara.
Exempel på dödläge
- Ett exempel i verkligheten skulle vara trafik, som bara går i en riktning.
- Här betraktas en bro som en resurs.
- Så när dödläge inträffar kan det enkelt lösas om en bil backar (förebygg resurser och återställning).
- Flera bilar kan behöva säkerhetskopieras om ett blockerat låsläge uppstår.
- Så svält är möjligt.
Vad är svält?
Svält är en situation där alla lågprioriterade processer blockerades och de högprioriterade processerna fortsätter. I alla system fortsätter förfrågningar om resurser med hög/låg prioritet att ske dynamiskt. Därmed krävs viss policy för att bestämma vem som får stöd när.
Med hjälp av vissa algoritmer kanske vissa processer inte får den önskade servicen även om de inte är låsta. Svält uppstår när vissa trådar gör delade resurser otillgängliga under en längre tid.
Exempel på svält
Ett objekt erbjuder till exempel en synkroniserad metod som sannolikt kommer att ta lång tid att återvända. Om en tråd använder denna metod ofta, kommer andra trådar som också behöver frekvent synkroniserad åtkomst till samma objekt ofta att blockeras.
Skillnaden mellan Deadlock, Starvation och Livelock
- Ett dödläge är en situation som uppstår i OS när någon process går in i ett vänteläge eftersom den begärda resursen hålls av en annan väntande process.
- Ett livelock, å andra sidan, liknar nästan ett dödlås, förutom att tillstånden för de processer som är involverade i ett livelock alltid fortsätter att förändras till varandra, ingen fortskrider.
- Så, Livelock är ett unikt fall av resurssvält.
Sammanfattning
- Definition: Ett Livelock är en situation där en begäran om ett exklusivt lås nekas upprepade gånger, eftersom många överlappande delade lås fortsätter att störa varandra.
- Livelock uppstår när det totala antalet tillåtna processer i ett specifikt system ska definieras av det totala antalet poster i processtabellen
- Ett dödläge är en situation som uppstår i OS när någon process går in i ett vänteläge eftersom en annan väntande process håller den efterfrågade resursen.
- Ett exempel i verkligheten skulle vara trafik, som bara går i en riktning.
- Ett exempel på Livelock skulle vara två personer som möts ansikte mot ansikte i en korridor, och båda flyttar sig åt sidan för att låta den andra passera.
- Svält är en situation där alla lågprioriterade processer blockerades och de högprioriterade processerna fortsätter.