Livelock: Vad är, Exempel, Difference med Deadlock
⚡ Smart sammanfattning
Livelock är en samtidighetssituation där processer fortsätter att ändra sina tillstånd som svar på varandra men ändå inte gör några riktiga framsteg, utan förblir aktiva och förbrukar CPU-cykler utan att någonsin slutföra sina uppgifter eller blockeras.

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 överlappar varandraping Delade lås stör varandra hela tiden. Processerna ändrar status hela tiden, vilket hindrar dem från att slutföra uppgiften.
Exempel på Livelock
Exempel 1:
Det enklaste exemplet på Livelock är två personer som möts ansikte mot ansikte i en korridor, och båda rör sig åt sidan för att låta den andra passera. De fortsätter att röra sig från sida till sida utan att göra några framsteg eftersom de rör sig åt samma håll samtidigt. Här korsar de aldrig varandra.
Exempel 2:
I bilden ovan behöver var och en av de två processerna två resurser, och de använder primitiv polling för att försöka få tag på de lås de behöver. Om ett försök misslyckas försöker metoden igen.
- Process A lagrar resurs Y
- Process B innehåller resurs X
- Process A kräver resurs X
- Process B kräver resurs Y
Anta att process A körs först och hämtar resurs X, och sedan körs process B och hämtar resurs Y. Oavsett vilken process som körs först gör ingen av dem ytterligare framsteg.
Ingen av de två processerna är dock blockerade. De använder CPU-resurser upprepade gånger utan att göra några framsteg, men de stannar aldrig för ett bearbetningsblock.
Därför är denna situation inte en dödläge, eftersom inte en enda process är blockerad; istället står vi inför en situation som motsvarar ett dödläge, vilket kallas LIVELOCK.
Vad leder till Livelock?
Livelock är knutet till antalet processer ett system tillåter, vilket definieras av det totala antalet poster i processtabellen. Dessa processtabellplatser behandlas därför som ändliga resurser. När processer upprepade gånger försöker få tag på dessa begränsade resurser samtidigt som de ständigt ger efter för varandra, gör ingen av dem framsteg, och systemet går in i ett livelock.
Vad är Deadlock?
A dödläge är en situation som uppstår i ett operativsystem när en process går in i ett vänteläge eftersom en annan vänteprocess håller den begärda resursen. Dödläge är ett vanligt problem vid multiprocessering, där flera processer delar en specifik typ av ömsesidigt exklusiv resurs som kallas mjuk låsning 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.
- När ett dödläge uppstår kan det enkelt lösas om en bil backar (föregriper resurser och backar).
- Flera bilar kan behöva säkerhetskopieras om ett blockerat låsläge uppstår.
- Därför är svält möjlig.
Exempel på dödläge
Vad är svält?
Svält är en situation där lågprioriterade processer blockeras medan högprioriterade processer fortskrider. I alla system sker begäranden om hög- och lågprioriterade resurser dynamiskt. Därför krävs det någon policy för att avgöra vem som får service och när.
Med vissa algoritmer kan vissa processer inte få önskad tjänst trots att de inte är låsta. Svält inträffar när vissa trådar gör delade resurser otillgängliga under en längre tid.
Exempel på svält
Till exempel erbjuder ett objekt en synkroniserad metod som sannolikt tar lång tid att returnera. Om en tråd använder den här metoden ofta blockeras ofta andra trådar som också behöver frekvent synkroniserad åtkomst till samma objekt.
Skillnaden mellan Deadlock, Starvation och Livelock
- Ett dödläge är en situation som uppstår i ett operativsystem när en process går in i ett vänteläge eftersom den begärda resursen innehas av en annan vänteprocess.
- Ett livelock, å andra sidan, är nästan likt ett deadlock, förutom att tillstånden för de processer som är involverade i ett livelock alltid förändras som svar på varandra, utan att ingen fortskrider.
- Så, livelock är ett unikt fall av resursbrist.


