dødvande i Operating System: Hvad er, cirkulær ventetid (eksempler)

Hvad er Deadlock?

deadlock er en situation, der opstår i OS, når en proces går ind i en ventetilstand, fordi en anden venteproces holder den efterspurgte ressource. Deadlock er et almindeligt problem i multi-processing, hvor flere processer deler en bestemt type gensidigt eksklusive ressource kendt som en blød lås eller software.

Eksempel på dødvande

  • Et eksempel fra den virkelige verden ville være trafik, som kun går i én retning.
  • Her betragtes en bro som en ressource.
  • Så når deadlock opstår, kan det nemt løses, hvis én bil bakker (foregribe ressourcer og tilbagerulning).
  • Flere biler skal muligvis bakkes op, hvis der opstår dødvande.
  • Så sult er muligt.
Eksempel på dødvande
Eksempel på dødvande

Hvad er cirkulær ventetid?

En proces venter på ressourcen, som holdes af den anden proces, som også venter på ressourcen, som den tredje proces holder osv. Dette vil fortsætte, indtil den sidste proces venter på en ressource, som den første proces holder. Dette skaber en cirkulær kæde.

For eksempel tildeles proces A ressource B, da den anmoder om ressource A. På samme måde tildeles proces B ressource A, og 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 er i stand til at rumme et af USB-drevene. Så når hver proces anmoder om et andet drev, vil de tre processer have en deadlock-situation, da hver proces venter på, at USB-drevet frigives, som i øjeblikket er i brug. Dette vil resultere i en cirkulær kæde.

Eksempel på cirkulær ventetid

Cirkulær venteeksempel

Deadlock Detection i OS

En deadlock-forekomst kan detekteres af ressourceplanlæggeren. En ressourceplanlægger hjælper OS med at holde styr på alle de ressourcer, der er allokeret til forskellige processer. Så når et dødvande opdages, kan det løses ved hjælp af nedenstående metoder:

Deadlock-forebyggelse i OS

Det er vigtigt at forhindre et dødvande, før det kan opstå. Systemet tjekker hver transaktion, før den udføres for at sikre, at den ikke fører til dødvande situationer. Sådan at selv en lille ændring forekom død, at en operation, der kan føre til dødvande i fremtiden, den heller aldrig tillod processen at udføre.

Det er et sæt metoder til at sikre, at mindst én af betingelserne ikke kan holde.

Ingen forebyggende handling

Ingen præemption - En ressource kan kun frigives frivilligt af den proces, der holder den, efter at processen har afsluttet sin opgave

  • Hvis en proces, som indeholder nogle ressourcer, anmoder om en anden ressource, som ikke umiddelbart kan allokeres til den, vil alle ressourcer i den situation blive frigivet.
  • Forudgående ressourcer kræver listen over ressourcer for en proces, der venter.
  • Processen genstartes kun, hvis den kan genvinde sin gamle ressource og en ny, som den anmoder om.
  • Hvis processen anmoder om en anden ressource, når den er tilgængelig, blev den givet til den anmodende proces.
  • Hvis den holdes af en anden proces, der venter på en anden ressource, frigiver vi den og giver den til den anmodende proces.

Gensidig udelukkelse

Gensidig udelukkelse er en fuld form for Mutex. Det er en speciel type binær semafor, som bruges til at kontrollere adgangen til den delte ressource. Det inkluderer en prioritetsarvsmekanisme for at undgå problemer med udvidet prioritetsinversion. Det gør det muligt at holde aktuelle opgaver med højere prioritet i blokeret tilstand i kortest mulig tid.

Ressourcer, der deles, såsom skrivebeskyttede filer, fører aldrig til dødvande, men ressourcer, såsom printere og båndstationer, har brug for eksklusiv adgang ved en enkelt proces.

Hold og vent

I denne tilstand skal processer stoppes i at rumme enkelte eller flere ressourcer, mens de samtidig venter på en eller flere andre.

Cirkulær Vent

Det pålægger en total bestilling af alle ressourcetyper. Cirkulær ventetid kræver også, at hver proces anmoder om ressourcer i stigende rækkefølge af opregning.

Undgåelse af dødvande Algorithms

Det er bedre at undgå en dødvande i stedet for at handle efter dødvandet er opstået. Det har brug for yderligere information, såsom hvordan ressourcer skal bruges. Undgåelse af dødvande er den enkleste og mest nyttige model, som hver proces erklærer det maksimale antal ressourcer af hver type, som den kan have brug for.

Undgåelse Algorithms

Algoritmen for deadlock-undgåelse hjælper dig med dynamisk at vurdere ressourceallokeringstilstanden, så der aldrig kan være en cirkulær ventesituation.

En enkelt forekomst af en ressourcetype.

  • Brug en ressourceallokeringsgraf
  • Der er nødvendige cyklusser, som er tilstrækkelige til dødvande

Flere forekomster af en ressourcetype.

Forskellen mellem sult og dødvande

Her er nogle vigtige forskelle mellem Deadlock og sult:

deadlock Sult
Deadlock-situationen opstår, når en af ​​processerne blev blokeret. Sult er en situation, hvor alle lavprioritetsprocesser blev blokeret, og de højprioriterede processer eksekveres.
Deadlock er en uendelig proces. Sult er en lang ventetid, men ikke en uendelig proces.
Hver dødvande har altid sult. Enhver sult har ikke nødvendigvis en dødvande.
Deadlock sker derefter gensidig udelukkelse, hold og vent. Her sker forkøb og cirkulær ventetid ikke samtidig. Det sker på grund af ukontrolleret prioritering og ressourcestyring.

Fordele ved Deadlock

Her er fordele/fordele ved at bruge Deadlock-metoden

  • Denne situation fungerer godt for processer, der udfører et enkelt udbrud af aktivitet
  • Der kræves ingen forkøbsret til Deadlock.
  • Praktisk metode, når den anvendes på ressourcer, hvis tilstand nemt kan gemmes og gendannes
  • Mulig at håndhæve via kompileringstidskontrol
  • Behøver ingen runtime-beregning, da problemet er løst i systemdesign

Ulemper ved Deadlock

Her er ulemper/ulemper ved at bruge deadlock-metoden

  • Forsinker processtart
  • Processer skal kende fremtidens ressourcebehov
  • Foregriber oftere end nødvendigt
  • Dis-tillader trinvise ressourceanmodninger
  • Iboende forkøbstab.

Resumé

  • Deadlock Definition: Det er en situation, der opstår i OS når en proces går ind i en ventetilstand, fordi en anden venteproces holder den efterspurgte ressource
  • Cirkulær afventning sker, når en proces venter på ressourcen, som holdes af den anden proces, som også venter på ressourcen, som den tredje proces holder osv.
  • En deadlock-forekomst kan detekteres af ressourceplanlæggeren.
  • Det er vigtigt at forhindre et dødvande, før det kan opstå.
  • En ressource kan kun frigives frivilligt af den proces, der holder den, efter at processen har afsluttet sin opgave.
  • Gensidig udelukkelse er en fuld form for Mutex. Det er en speciel type binær semafor som bruges til at kontrollere adgangen til den delte ressource.
  • Hold og vent er en tilstand, hvor processer skal stoppes i at holde på enkelte eller flere ressourcer, mens de samtidig venter på en eller flere andre.
  • Undgåelse af dødvande er den enkleste og mest nyttige model, som hver proces erklærer det maksimale antal ressourcer af hver type, som den kan have brug for.
  • Algoritmen for deadlock-undgåelse hjælper dig med dynamisk at vurdere ressourceallokeringstilstanden, så der aldrig kan være en cirkulær ventesituation.
  • Deadlock er en uendelig proces, hvorimod sult er en lang ventetid, men ikke en uendelig proces.