Vad är Livelock?
En livelock är en situation där en begäran om ett exklusivt lås avslås 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.
I denna handledning för operativsystem lär du dig:
- Vad är Livelock?
- Exempel på Livelock
- Vad leder till livelock?
- Vad är Deadlock?
- Exempel på dödläge
- Vad är svält?
- Skillnaden mellan dödläge, svält och livelock
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 å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 då. Här korsar de aldrig varandra.
Exempel 2:
Du kan se i bilden ovan, 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 är nödvändiga 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
Förutsatt 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 behandlingsblock.
Därför är denna situation inte en dödläge eftersom det inte finns en enda process som blockeras, men vi står inför situationen som motsvarar dödläge, vilket är LIVELOCK.
Vad leder till livelock?
Livelock inträffar när det totala antalet tillåtna processer i ett specifikt system ska definieras av det totala antalet poster i procestabellen. Därför bör processbordsluckor kallas Finite Resources.
Vad är Deadlock?
En dödläge är en situation som uppstår i OS när någon process går in i vänteläge eftersom en annan vänteprocess håller den begärda resursen. Dödläge är ett vanligt problem vid flerbearbetning där flera processer delar en specifik typ av ömsesidigt exklusiv resurs som kallas ett mjukt lås eller programvara.
Exempel på dödläge
- Ett verkligt exempel skulle vara trafik, som bara går i en riktning.
- Här betraktas en bro som en resurs.
- Så när Deadlock händer kan det enkelt lösas om en bil säkerhetskopierar (Förhindra resurser och återställning).
- Flera bilar kan behöva säkerhetskopieras om en dödläge uppstår.
- Så svält är möjligt.

Vad är svält?
Svält är en situation där alla processer med låg prioritet blockerades och processerna med hög prioritet fortsätter. I vilket system som helst fortsätter begäran om resurser med hög / låg prioritet dynamiskt. Därför krävs en viss policy för att bestämma vem som får stöd när.
Med vissa algoritmer kanske vissa processer inte får önskad service trots att de inte är låsta. Svält inträffar när vissa trådar gör delade resurser otillgängliga under lång tid.
Exempel på svält:
Till exempel erbjuder ett objekt en synkroniserad metod som sannolikt tar lång tid att återvända. Om en tråd använder den här metoden ofta blockeras ofta andra trådar som också behöver synkroniserad åtkomst till samma objekt.
Skillnaden mellan dödläge, svält och livelock
- En dödläge är en situation som uppstår i operativsystemet när någon process går in i vänteläge eftersom den efterfrågade resursen hålls av en annan vänteprocess.
- En livmassa, å andra sidan, liknar nästan ett dödläge, förutom att tillstånden i de processer som är involverade i en livmassa alltid fortsätter att förändras till varandra, ingen framsteg.
- Så Livelock är ett unikt fall av resurs svält.
Sammanfattning:
- Definition: En livelock är en situation där en begäran om ett exklusivt lås avslås upprepade gånger, eftersom många överlappande delade lås fortsätter att störa varandra.
- Livelock inträffar när det totala antalet tillåtna processer i ett specifikt system ska definieras av det totala antalet poster i procestabellen
- En dödläge är en situation som uppstår i OS när någon process går in i vänteläge eftersom en annan vänteprocess håller den begärda resursen.
- Ett verkligt exempel 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 åt sidan för att låta den andra passera.
- Svält är en situation där alla processer med låg prioritet blockerades och processerna med hög prioritet fortsätter.