dødvande i Operating System: Hvad er, cirkulær ventetid (eksempler)
⚡ Smart opsummering
En dødvande i et operativsystem opstår, når et sæt processer blokeres, fordi hver processer indeholder en ressource og venter på en anden, som en anden proces indeholder. Dette skaber en cirkulær kæde, hvor ingen proces kan fortsætte.
Hvad er Deadlock?
deadlock er en situation, der opstår i en operativsystem når en proces går i ventetilstand, fordi en anden ventende proces holder den efterspurgte ressource. Deadlock er et almindeligt problem i multiprocessering, hvor flere processer deler en bestemt type gensidigt udelukkende ressource kendt som en soft lock eller software lock.
Når der opstår en fastlåst situation, kan ingen af de involverede processer fortsætte, så det berørte arbejde stopper, indtil operativsystemet griber ind.
Eksempel på dødvande
- Et eksempel fra den virkelige verden ville være trafik, der kun kører i én retning.
- Her betragtes en bro som en ressource.
- Så når der opstår en fastlåst situation, kan den løses, hvis én bil bakker (foregriber ressourcer og ruller tilbage).
- Flere biler skal muligvis bakkes op, hvis der opstår dødvande.
- Så sult er mulig.
Eksempel på dødvande
Hvad er cirkulær ventetid?
En proces venter på en ressource, der holdes af en anden proces, som også venter på en ressource, der holdes af en tredje proces, og så videre. Dette fortsætter, indtil den sidste proces venter på en ressource, der holdes af den første proces. Dette skaber en cirkulær kæde.
For eksempel tildeles proces A ressource B, mens den anmoder om ressource A. På samme måde tildeles proces B ressource A, mens den anmoder om ressource B. Dette skaber en cirkulær venteløkke.
Eksempel på cirkulær ventetid
For eksempel har en computer tre USB-drev og tre processer. Hver af de tre processer indeholder et af USB-drevene. Så når hver proces anmoder om et andet drev, når de tre processer en fastlåst situation, da hver enkelt venter på, at et USB-drev frigives, mens det stadig er i brug. Dette resulterer i en cirkulær kæde.
Cirkulær venteeksempel
Deadlock Detection i OS
En fastlåsning kan registreres af ressourceplanlæggeren. En ressourceplanlægger hjælper operativsystemet med at holde track af alle de ressourcer, der er allokeret til forskellige processer. Når en fastlåst situation er registreret, kan den løses ved at forudgå ressourcer, rulle en proces tilbage eller afslutte en eller flere af de fastlåste processer.
Deadlock-forebyggelse i OS
Det er vigtigt at forhindre en fastlåsning, før den kan opstå. Systemet kontrollerer hver transaktion, før den udføres, for at sikre, at den ikke fører til en fastlåsning. Selv en lille operation, der kan forårsage en fastlåsning i fremtiden, må aldrig udføres.
Forebyggelse af dødvande er et sæt af metoder til at sikre, at mindst én af de fire nødvendige betingelser ikke kan være opfyldt.
Ingen undtagelse
En ressource kan kun frigives frivilligt af den proces, der holder den, efter at processen har afsluttet sin opgave.
- Hvis en proces, der indeholder ressourcer, anmoder om en anden ressource, der ikke umiddelbart kan allokeres til den, frigives alle dens ressourcer.
- Forudbestemte ressourcer føjes til listen over ressourcer, som processen venter på.
- Processen genstartes kun, når den kan genvinde sine gamle ressourcer såvel som de nye, den anmoder om.
Gensidig udelukkelse
Mutual Exclusion er den fulde form af Mutex. Det er en særlig type binær kode. semafor der bruges til at kontrollere adgang til en delt ressource. Den inkluderer en prioritetsarvsmekanisme for at undgå langvarige problemer med prioritetsinversion og holder opgaver med højere prioritet blokeret i kortest mulig tid.
Delte ressourcer som skrivebeskyttede filer fører aldrig til fastlåste situationer, men ressourcer som printere og båndstationer kræver eksklusiv adgang via en enkelt proces.
Hold og vent
I denne tilstand skal processer stoppes fra at holde en eller flere ressourcer, mens de samtidig venter på en eller flere andre.
Cirkulær Vent
Denne metode pålægger en samlet rækkefølge af alle ressourcetyper. Forebyggelse af cirkulær ventetid kræver også, at hver proces anmoder om ressourcer i en stigende rækkefølge efter optælling.
Undgåelse af dødvande Algorithms
Det er bedre at undgå en fastlåst situation i stedet for at handle, efter den er opstået. Undgåelse kræver yderligere information, f.eks. hvordan ressourcerne vil blive brugt. Undgåelse af fastlåst situation er en nyttig model, hvor hver proces deklarerer det maksimale antal ressourcer af hver type, som den måtte have brug for.
Undgåelse Algorithms
Algoritmen til undgåelse af deadlock vurderer dynamisk ressourceallokeringstilstanden, så en cirkulær ventesituation aldrig kan opstå.
For en enkelt forekomst af en ressourcetype:
- Brug en ressourceallokeringsgraf.
- En cyklus i grafen er nødvendig og tilstrækkelig for en dødvande.
For flere forekomster af en ressourcetype:
- En cyklus er nødvendig, men ikke tilstrækkelig til en fastlåst situation.
- Brug Bankmandens algoritme.
Forskellen mellem sult og dødvande
Her er nogle vigtige forskelle mellem dødvande og sult:
| deadlock | Sult |
|---|---|
| En dødvandesituation opstår, når en af processerne blokeres. | Sult er en situation, hvor alle lavprioriterede processer blokeres, mens højprioriterede processer udføres. |
| Deadlock er en uendelig proces. | Sult er en lang ventetid, men ikke en uendelig proces. |
| Enhver dødvande har altid sult. | Enhver sult har ikke nødvendigvis en fastlåst situation. |
| Dødlåsning opstår på grund af gensidig udelukkelse, hold og vent, ingen præemption og cirkulær vent, der forekommer samtidig. | Det sker på grund af ukontrolleret prioritering og dårlig ressourcestyring. |
Fordele ved Deadlock
Her er fordelene ved at bruge metoden til håndtering af fastlåste situationer:
- Denne situation fungerer godt for processer, der udfører et enkelt aktivitetsudbrud.
- Der kræves ingen præemption ved fastlåsning.
- Det er en bekvem metode, når den anvendes på ressourcer, hvis tilstand nemt kan gemmes og gendannes.
- Det er muligt at håndhæve via kontroller under kompilering.
- Det kræver ingen runtime-beregning, da problemet løses i systemdesignet.
Ulemper ved Deadlock
Her er ulemperne ved at bruge metoden til håndtering af fastlåste situationer:
- Det forsinker processens igangsættelse.
- Processer skal kende deres fremtidige ressourcebehov på forhånd.
- Den forebygger oftere end nødvendigt.
- Det tillader ikke inkrementelle ressourceanmodninger.
- Det har iboende præemptionstab.



