Vad är dödläge i operativsystemet: villkor och detekteringsalgoritm

Prova Vårt Instrument För Att Eliminera Problem





Huvudsyftet med ett operativsystem är att tillhandahålla korrekt kommunikation mellan hårdvaru- och programvaruresurser och även ge gemensamma tjänster till program. När en operativsystemsprocess vill komma åt vilken resurs som helst, skickar den först en begäran till den specifika resurs som den vill komma åt, sedan använder den resursen och släpper slutligen resursen efter användning. Antag att många processer försöker få åtkomst till en resurs samtidigt, det blir svårt att tillhandahålla en resurs till alla processerna åt gången i en sådan situation uppstår begreppet dödläge. Därför beskriver den här artikeln hur dödläge inträffar och hur man löser denna dödläge.

Vad är dödläget i operativsystemet?

Definition: Dead-Lock är en situation där två eller flera processorer väntar på att någon händelse ska hända, men sådana händelser som inte händer är ett dödläge, och processorerna sägs vara i ett dödläge. Låt oss till exempel anta ett realtidsscenario, där det finns två bilar A & B, som körs av två enskilda förare på en enkelriktad väg. Nu uppstår situationen där bil A-förare säger att han flyttar mot norr är en korrekt riktning, medan bil B-förare säger att han rör sig i riktning mot söder är korrekt. Men ingen av dem rör sig bakåt för att låta en annan bil gå framåt, detta tillstånd kallas dödläge.




Bil-exempel

bil-exempel

För bättre förståelse, låt oss överväga ett annat exempel där det finns två resurser R1, R2 och två processer P1 och P2, där R1 tilldelas P1 och R2 tilldelas P2. Om P1 nu vill ha åtkomst till R2, som vi redan vet R2 hålls av P2, och nu vill P2 få åtkomst till R1, vilket är P1 exekverar endast när den får åtkomst till R2, kör P2 också bara när den får åtkomst till R1 denna situation är ett dödläge.



Processor-exempel

processor-exempel

Döda låsförhållanden

Följande är de fyra viktiga dödlägesförhållandena som ska inträffa om alla förhållanden uppstår samtidigt, det finns vissa chanser för dödläget att inträffa.

Ömsesidig uteslutning

Det betyder att vilken resurs vi använder den måste användas på ett ömsesidigt sätt. Där endast en process endast använder en resurs åt gången. Till exempel pågår utskriftsprocessen och plötsligt försöker en annan process att avbryta utskriftsprocessen. Så här i ömsesidig uteslutningssituation, först efter att utskriftsuppgiften är klar, behandlas bara nästa uppgift. Ömsesidig utslagning kan elimineras genom att dela resurser samtidigt, vilket praktiskt taget inte är möjligt.

Ömsesidig uteslutning

ömsesidig uteslutning

Ingen förköp

Enligt förebyggande baserade algoritmer, om det finns en prioriterad uppgift som försöker avbryta den aktuella uppgiften. Den förebyggande algoritmen som innehåller den nuvarande uppgiften och kör först prioritetsuppgift och får tillbaka till sin första uppgift. En situation som förklaras enligt ovanstående exempel där en process innehåller resursen så länge den blir exekverad, det vill säga P1 kan släppa R1 endast efter exekvering, på samma sätt P2 release R2 endast efter körning. Om det inte förekommer något förbud kan dödläget inträffa.


No-Preemption-Exempel

inget före-exempel-exempel

Håll och vänta

En process innehåller vissa resurser och väntar på ytterligare resurser men dessa resurser förvärvas av någon annan process. Från exemplet ovan håller P1 R1 och väntar på R2, där R2 förvärvas av P2, och P2 håller R2 och väntar på R1, där R1 förvärvas av P1, är en dödläge i systemet.

Håll-och-vänta-exempel

håll-och-vänta-exempel

Cirkulär vänta

En uppsättning processer sägs vara i dödläge om en process väntar på en resurs som allokeras till en annan process och den processen väntar på en resurs, det liknar det ovan förklarade exemplet där det är i loopform. Där P1 väntar på R2 och R2 tilldelas för P2 och P2 väntar på R1 och R1 tilldelas för P1 vilket är en cirkulär väntform om detta tillstånd uppfyller dödläge.

Cirkulär-vänta-exempel

cirkulär-vänta-exempel

Algoritm för detektering av dödlås

De fall där vi tilldelar resurser till processer och operativsystem kontrollerar om ett dödläge har inträffat i systemet eller inte med två huvuddetekteringsalgoritmer, de är

  • Enstaka instanser
  • Flera instanser av resurstyp

Enstaka instans

En enda instans är en situation där ett system har enstaka instanser av alla resurser. Det kallas också vänta på grafalgoritm eller resurstilldelningsdiagram. Resursallokeringsdiagrammet består av en uppsättning processer och en uppsättning resurser som representeras som två olika hörn. Resurserna i resursallokeringsdiagrammet modifieras och representeras som vänta på diagramform. Där vänta på diagramform endast har processer som representeras som hörn enligt nedan, där,

  • Resurstilldelningsgraf: Processer P1, P2, P3 och resurser R1, R2, R3 representeras i resurstilldelningsdiagrammet.
  • Vänta på graf: Endast processer P1, P2, P3 nämns i väntan på grafen.
  • Om det finns ett cykelförhållande, att om det finns ett kontinuerligt flöde av en process i en riktning betyder det att cykelvillkor avslutas och vänta på att diagrammet är i ett dödläge.

Exempel 1: Nedanstående exempel visar att det inte finns något dödläge eftersom det inte observeras något kontinuerligt flöde i väntan på diagrammet.

Exempel på en enda instans1

enstaka exempel1

Exempel 2: Dödläge har inträffat eftersom det finns ett kontinuerligt flöde av cykel från P1 till P4.

Enstaka instans - exempel 2

enstaka exempel2

Om dödläge förekommer mycket ofta i systemet används detekteringsalgoritmen ofta. Om detekteringsalgoritmen används mer kommer det att finnas mer omkostnader och mer beräkningstid. Därför för att övervinna detta åberopar vi algoritmen efter, ger lika mycket tid, så används vikten för grafen för att detektera dödläge.

Flera instanser av resurstyp

Flera instanser av resurstypen är en situation där ett system har flera instanser av alla resurser, det kallas också Bankers algoritm. Enligt Bankers-algoritmen släpper den sina resurser så snart processen får alla nödvändiga resurser.

Låt oss överväga följande exempel, anta att det finns 3 processer P0, P1, P2 och resurstyp A, B, C där A kan vara CPU , B kan vara skrivare och C kan vara tangentbordet. Siffrorna '0' i kolumnen representerar tillgången på resurser.

Fall (i): Antag att om vi tar villkorförfrågan är '000' villkor som finns i P0 och P2, bör vi kontrollera vilken begäran som uppfylls, processerna P0 släpper processerna efter att de har tilldelats, sedan släpps nästa P2-processer efter att de har tilldelats. Så här i en sekvens släpper en efter en process P0, P2, P3, P1, P4 i en sekvens. Slutligen får vi tillgängliga resurser som P7, P2, P6. Den tillgängliga sekvensen är ett tillstånd där det inte finns något dödläge.

Bankers-algoritm-exempel1

bankirer-algoritm-exempel1

Hus (ii): Antag att om P2 är 001 istället för 000, ska du nu använda bankirens algoritm för att kontrollera om dödläge är, där den enda P0 körs bland alla 5 processerna. Följaktligen är P1, P2, P3, P4 i dödläge förutom P0.

Bankers-exempel2

bankirer-exempel2

Tillämpningar av Deadlock

Tillämpningarna av dödläge kan förklaras med ett realtidsexempel på examensresultat online, där flera studenter försöker komma åt sin universitetswebbplats vid tidpunkten för släpp. Man kan observera att webbsidan ibland inte laddas åt gången för flera användare, detta är ett dödläge. Detta kan övervinnas med någon av algoritmerna.

Fördelar

Fördelarna med dödläge är

  • Ingen förköp observeras vid undvikande av dödläge
  • Ingen försening i processen

Nackdelar

Nackdelen med dödläget är

  • Resursen som ska användas måste vara känd i förväg
  • Blockering av processen under lång tid
  • Förlust av förvärv ärvs.

Den här artikeln ger en översikt över hur dödläge inträffar när det finns två eller flera processer och de tre förhållandena som är orsaken till att ett dödläge inträffar, och de två typerna av algoritmer, nämligen resursdelningsalgoritm som upptäcker att det finns en dödläge och bankirernas algoritm som är en blockeringsalgoritm. Här är frågan ”Vad händer om dödläget ignoreras?”.