Dödläge in Operating System: Vad är, Circular Wait (exempel)
Vad är Deadlock?
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 begärda 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 Circular wait?
En process väntar på resursen, som hålls av den andra processen, som också väntar på resursen som hålls av den tredje processen etc. Detta kommer att fortsätta tills den sista processen väntar på en resurs som hålls av den första processen. Detta skapar en cirkulär kedja.
Till exempel tilldelas process A resurs B när den begär resurs A. På samma sätt tilldelas process B resurs A och den begär resurs B. Detta skapar en cirkulär vänteloop.
Exempel på cirkulär väntan
En dator har till exempel tre USB-enheter och tre processer. Var och en av de tre processerna kan hålla en av USB-enheterna. Så när varje process begär en annan enhet kommer de tre processerna att ha dödläge eftersom varje process väntar på att USB-enheten ska släppas, som för närvarande används. Detta kommer att resultera i en cirkulär kedja.
Deadlock Detection i OS
En dödlägesförekomst kan upptäckas av resursplaneraren. En resursplanerare hjälper OS att hålla reda på alla resurser som är allokerade till olika processer. Så när ett dödläge upptäcks kan det lösas med nedanstående metoder:
Deadlock Prevention i OS
Det är viktigt att förhindra ett dödläge innan det kan inträffa. Systemet kontrollerar varje transaktion innan den exekveras för att säkerställa att den inte leder till dödläget. Sådan att även en liten förändring inträffar död att en operation som kan leda till dödläge i framtiden det heller aldrig tillät processen att exekvera.
Det är en uppsättning metoder för att säkerställa att åtminstone ett av villkoren inte kan hålla.
Ingen förebyggande åtgärd
Ingen preemption – En resurs kan endast frigöras frivilligt av processen som håller den efter att processen har avslutat sin uppgift
- Om en process som innehåller vissa resurser begär en annan resurs som inte omedelbart kan allokeras till den, i den situationen kommer alla resurser att frigöras.
- Förhindrade resurser kräver listan med resurser för en process som väntar.
- Processen kommer att startas om endast om den kan återfå sin gamla resurs och en ny som den begär.
- Om processen begär någon annan resurs, när den är tillgänglig, gavs den till den begärande processen.
- Om den hålls av en annan process som väntar på en annan resurs släpper vi den och ger den till den begärande processen.
Ömsesidig uteslutning
Ömsesidig uteslutning är en fullständig form av Mutex. Det är en speciell typ av binär semafor som används för att kontrollera åtkomsten till den delade resursen. Den inkluderar en prioritetsärvningsmekanism för att undvika problem med utökad prioritetsinversion. Det gör att nuvarande högre prioriterade uppgifter kan hållas i blockerat tillstånd under kortast möjliga tid.
Delade resurser som skrivskyddade filer leder aldrig till dödläge, men resurser, som skrivare och bandenheter, behöver exklusiv åtkomst genom en enda process.
Håll och vänta
I detta tillstånd måste processer stoppas från att hålla enstaka eller flera resurser samtidigt som de väntar på en eller flera andra.
Cirkulär väntan
Det ålägger en total ordning av alla resurstyper. Cirkulär väntan kräver också att varje process begär resurser i ökande uppräkningsordning.
Undvikande av dödläge Algorithms
Det är bättre att undvika ett dödläge istället för att vidta åtgärder efter att dödläget har inträffat. Den behöver ytterligare information, som hur resurser ska användas. Undvikande av dödläge är den enklaste och mest användbara modellen som varje process deklarerar det maximala antalet resurser av varje typ som den kan behöva.
Undvikande Algorithms
Algoritmen för att undvika dödläge hjälper dig att dynamiskt bedöma resursallokeringsläget så att det aldrig kan uppstå en cirkulär väntesituation.
En enskild instans av en resurstyp.
- Använd ett resursallokeringsdiagram
- Cykler är nödvändiga som är tillräckliga för dödläge
Flera instanser av en resurstyp.
- Cykler är nödvändiga men aldrig tillräckliga för dödläge.
- Använder bankirens algoritm
Skillnaden mellan svält och dödläge
Här är några viktiga skillnader mellan Deadlock och svält:
Dödläge | Svält |
---|---|
Deadlock-situationen uppstår när en av processerna blockerades. | Svält är en situation där alla lågprioriterade processer blockerades och de högprioriterade processerna 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 har alltid svält. | Varje svält har inte nödvändigtvis ett dödläge. |
Dödläge inträffar sedan ömsesidig uteslutning, håll och vänta. Här förekommer inte förköp och cirkulär väntan samtidigt. | Det sker på grund av okontrollerad prioritering och resurshantering. |
Fördelar med Deadlock
Här är fördelar/fördelar med att använda Deadlock-metoden
- Denna situation fungerar bra för processer som utför en enda aktivitetsskur
- Inget förköp behövs för Deadlock.
- Bekväm metod när den tillämpas på resurser vars tillstånd enkelt kan sparas och återställas
- Möjligt att genomdriva via kompileringstidskontroller
- Behöver ingen körtidsberäkning eftersom problemet är löst i systemdesign
Nackdelar med Deadlock
Här är nackdelar / nackdelar med att använda dödlägesmetoden
- Fördröjer processinitieringen
- Processer måste känna till framtida resursbehov
- Föregriper oftare än nödvändigt
- Dis-tillåter inkrementella resursbegäranden
- Inneboende förköpsförluster.
Sammanfattning
- Deadlock Definition: Det ä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
- Cirkulär väntan händer när en process väntar på resursen, som hålls av den andra processen, som också väntar på resursen som hålls av den tredje processen etc.
- En dödlägesförekomst kan upptäckas av resursplaneraren.
- Det är viktigt att förhindra ett dödläge innan det kan inträffa.
- En resurs kan endast frigöras frivilligt av processen som håller den efter att processen har avslutat sin uppgift.
- Ömsesidig uteslutning är en fullständig form av Mutex. Det är en speciell typ av binär semafor som används för att kontrollera åtkomsten till den delade resursen.
- Vänta och vänta är ett tillstånd där processer måste stoppas från att hålla enstaka eller flera resurser samtidigt som de väntar på en eller flera andra.
- Undvikande av dödläge är den enklaste och mest användbara modellen som varje process deklarerar det maximala antalet resurser av varje typ som den kan behöva.
- Algoritmen för att undvika dödläge hjälper dig att dynamiskt bedöma resursallokeringsläget så att det aldrig kan uppstå en cirkulär väntesituation.
- Dödläge är en oändlig process, medan svält är en lång väntan men inte en oändlig process.