Dödläge in Operating System: Vad är, Circular Wait (exempel)
⚡ Smart sammanfattning
Ett dödläge i ett operativsystem uppstår när en uppsättning processer blockeras eftersom varje processer innehåller en resurs och väntar på en annan som en annan process innehåller, vilket skapar en cirkulär kedja där ingen process kan fortsätta.
Vad är Deadlock?
Dödläge är en situation som uppstår i en 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 uteslutande resurs som kallas mjuklåsning eller programlåsning.
När ett dödläge uppstår kan ingen av de inblandade processerna fortsätta, så det berörda arbetet avbryts tills operativsystemet ingriper.
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 ett dödläge uppstår kan det 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.
- Så svält är möjlig.
Exempel på dödläge
Vad är Circular wait?
En process väntar på en resurs som innehas av en andra process, som också väntar på en resurs som innehas av en tredje process, och så vidare. Detta fortsätter tills den sista processen väntar på en resurs som innehas av den första processen. Detta skapar en cirkulär kedja.
Till exempel tilldelas process A resurs B medan den begär resurs A. På samma sätt tilldelas process B resurs A medan den begär resurs B. Detta skapar en cirkulär vänteslinga.
Exempel på cirkulär väntan
Till exempel har en dator tre USB-enheter och tre processer. Var och en av de tre processerna innehåller en av USB-enheterna. Så när varje process begär en annan enhet hamnar de tre processerna i ett dödläge, eftersom var och en väntar på att en USB-enhet ska släppas medan den fortfarande används. Detta resulterar i en cirkulär kedja.
Cirkulär vänta exempel
Deadlock Detection i OS
Ett dödläge kan upptäckas av resursschemaläggaren. En resursschemaläggare hjälper operativsystemet att hålla track av alla resurser som är allokerade till olika processer. När ett dödläge upptäcks kan det lösas genom att resurser förbehålls, en process återställs eller en eller flera av de låsta processerna avslutas.
Deadlock Prevention i OS
Det är viktigt att förhindra ett dödläge innan det kan uppstå. Systemet kontrollerar varje transaktion innan den utförs för att säkerställa att den inte leder till ett dödläge. Inte ens en liten operation som skulle kunna orsaka ett dödläge i framtiden tillåts utföras.
Förebyggande av dödlägen är en uppsättning metoder för att säkerställa att minst ett av de fyra nödvändiga villkoren inte kan upprätthållas.
Ingen befrielse
En resurs kan endast frigöras frivilligt av processen som innehar den, efter att processen har slutfört sin uppgift.
- Om en process som lagrar resurser begär en annan resurs som inte omedelbart kan allokeras till den, frigörs alla dess resurser.
- Förutbestämda resurser läggs till i listan över resurser som processen väntar på.
- Processen startas om endast när den kan återfå sina gamla resurser såväl som de nya som den begär.
Ömsesidig uteslutning
Mutual Exclusion är den fullständiga formen av Mutex. Det är en speciell typ av binär semafor som används för att kontrollera åtkomst till en delad resurs. Den inkluderar en prioritetsarvsmekanism för att undvika utdragna problem med prioritetsinvertering och håller uppgifter med högre prioritet blockerade under kortast möjliga tid.
Delade resurser som skrivskyddade filer leder aldrig till dödlägen, men resurser som skrivare och bandenheter behöver exklusiv åtkomst via en enda process.
Håll och vänta
I detta tillstånd måste processer stoppas från att lagra en eller flera resurser samtidigt som de väntar på en eller flera andra.
Cirkulär väntan
Denna metod kräver en total ordning av alla resurstyper. Förebyggande av cirkulär väntetid kräver också att varje process begär resurser i en stigande uppräkningsordning.
Undvikande av dödläge Algorithms
Det är bättre att undvika ett dödläge än att vidta åtgärder efter att det har uppstått. Undvikande kräver ytterligare information, till exempel hur resurser kommer att användas. Undvikande av dödlägen är en användbar modell där varje process deklarerar det maximala antalet resurser av varje typ som den kan behöva.
Undvikande Algorithms
Algoritmen för att undvika dödlägen utvärderar dynamiskt resursallokeringsläget så att en cirkulär väntesituation aldrig kan uppstå.
För en enskild instans av en resurstyp:
- Använd ett resursallokeringsdiagram.
- En cykel i grafen är nödvändig och tillräcklig för ett dödläge.
För flera instanser av en resurstyp:
- En cykel är nödvändig men inte tillräcklig för ett dödläge.
- Använd Bankirens algoritm.
Skillnaden mellan svält och dödläge
Här är några viktiga skillnader mellan dödläge och svält:
| Dödläge | Svält |
|---|---|
| En dödlägessituation uppstår när en av processerna blockeras. | Svält är en situation där alla lågprioriterade processer blockeras medan högprioriterade processer körs. |
| Deadlock är en oändlig process. | Svält är en lång väntan, men inte en oändlig process. |
| Varje dödläge innebär alltid svält. | Varje svältsituation har inte nödvändigtvis ett dödläge. |
| Dödläge uppstår på grund av ömsesidig uteslutning, håll och vänta, ingen förköp och cirkulär väntan som inträffar tillsammans. | Det händer på grund av okontrollerad prioritering och dålig resurshantering. |
Fördelar med Deadlock
Här är fördelarna med att använda metoden för hantering av dödlägen:
- Den här situationen fungerar bra för processer som utför en enda aktivitetsutbrott.
- Ingen förköpsrätt behövs vid dödläge.
- Det är en bekväm metod när den tillämpas på resurser vars tillstånd enkelt kan sparas och återställas.
- Det är möjligt att tillämpa detta via kontroller vid kompilering.
- Det behöver ingen körtidsberäkning, eftersom problemet löses i systemdesignen.
Nackdelar med Deadlock
Här är nackdelarna med att använda metoden för hantering av dödlägen:
- Det försenar processens initiering.
- Processer måste känna till sina framtida resursbehov i förväg.
- Den föregriper oftare än nödvändigt.
- Det tillåter inte inkrementella resursförfrågningar.
- Den har inneboende förköpsförluster.



