Dødlås inn Operating System: Hva er, sirkulær vent (eksempler)

⚡ Smart oppsummering

Vranglås i et operativsystem oppstår når et sett med prosesser blokkeres fordi hver av dem inneholder en ressurs og venter på en annen som en annen prosess inneholder, noe som skaper en sirkulær kjede der ingen prosess kan fortsette.

  • 🔒 Definisjon: En vranglås fryser prosesser som hver inneholder en ressurs mens de venter på hverandre.
  • 🧩 Fire betingelser: Gjensidig utelukkelse, hold og vent, ingen forkjøpsrett og sirkulær venting må alle holde sammen.
  • 🔁 Sirkulær venting: Prosesser danner en lukket kjede, der hver prosess venter på en ressurs som holdes av den neste.
  • 🛡️ Forebygging: Å bryte en av de fire betingelsene hindrer at det dannes en fastlåst situasjon.
  • 🏦 Unngåelse: Bankerens algoritme sjekker ressursforespørsler for å holde systemet i en sikker tilstand.
  • 🤖 AI-vinkel: Maskinlæring oppdager vranglåsmønstre, og Copilot hjelper med å skrive og gjennomgå låsekode.

Dødlås inn Operating System

Hva er Deadlock?

vranglås er en situasjon som oppstår i en operativsystem når en prosess går inn i en ventetilstand fordi en annen ventende prosess holder den etterspurte ressursen. Vranglås er et vanlig problem i flerprosessering, der flere prosesser deler en spesifikk type gjensidig utelukkende ressurs kjent som en myk lås eller programvarelås.

Når det oppstår en vranglås, kan ingen av de involverte prosessene fortsette, så det berørte arbeidet stopper inntil operativsystemet griper inn.

Eksempel på deadlock

  • Et eksempel fra den virkelige verden ville være trafikk som bare går i én retning.
  • Her regnes en bro som en ressurs.
  • Så når det oppstår en fastlåst situasjon, kan den løses hvis én bil rygger (foregriper ressurser og ruller tilbake).
  • Flere biler må kanskje sikkerhetskopieres hvis det oppstår en vranglåssituasjon.
  • Så sult er mulig.

Eksempel på deadlock

Eksempel på vranglås

Hva er Circular wait?

En prosess venter på en ressurs som holdes av en annen prosess, som også venter på en ressurs som holdes av en tredje prosess, og så videre. Dette fortsetter til den siste prosessen venter på en ressurs som holdes av den første prosessen. Dette skaper en sirkulær kjede.

For eksempel tildeles prosess A ressurs B mens den ber om ressurs A. På samme måte tildeles prosess B ressurs A mens den ber om ressurs B. Dette skaper en sirkulær venteløkke.

Eksempel på sirkulær ventetid

For eksempel har en datamaskin tre USB-stasjoner og tre prosesser. Hver av de tre prosessene inneholder én av USB-stasjonene. Så når hver prosess ber om en annen stasjon, havner de tre prosessene i en vranglåssituasjon, ettersom hver av dem venter på at en USB-stasjon skal frigjøres mens den fortsatt er i bruk. Dette resulterer i en sirkulær kjede.

Eksempel på sirkulær ventetid

Eksempel på sirkulær ventetid

Deadlock Detection i OS

En vranglås kan oppdages av ressursplanleggeren. En ressursplanlegger hjelper operativsystemet med å holde track av alle ressursene som er allokert til forskjellige prosesser. Når en vranglås oppdages, kan den løses ved å forutse ressurser, rulle tilbake en prosess eller avslutte en eller flere av de vranglåste prosessene.

Deadlock Prevention i OS

Det er viktig å forhindre en vranglås før den kan oppstå. Systemet sjekker hver transaksjon før den utføres for å sikre at den ikke fører til en vranglås. Selv en liten operasjon som kan forårsake en vranglås i fremtiden, får aldri lov til å utføres.

Forebygging av vranglåser er et sett med metoder for å sikre at minst én av de fire nødvendige betingelsene ikke kan oppstå.

Ingen innløsning

En ressurs kan bare frigjøres frivillig av prosessen som holder den, etter at prosessen har fullført oppgaven sin.

  • Hvis en prosess som holder på noen ressurser ber om en annen ressurs som ikke umiddelbart kan allokeres til den, frigjøres alle ressursene.
  • Forhåndsbestemte ressurser legges til i listen over ressurser som prosessen venter på.
  • Prosessen startes på nytt bare når den kan gjenopprette de gamle ressursene så vel som de nye den ber om.

Gjensidig utelukkelse

Gjensidig eksklusjon er den fulle formen for Mutex. Det er en spesiell type binær kode. semafor som brukes til å kontrollere tilgang til en delt ressurs. Den inkluderer en prioritetsarvmekanisme for å unngå langvarige problemer med prioritetsinversjon og holder oppgaver med høyere prioritet blokkert i kortest mulig tid.

Delte ressurser som skrivebeskyttede filer fører aldri til vranglåser, men ressurser som skrivere og båndstasjoner trenger eksklusiv tilgang via én enkelt prosess.

Hold og vent

I denne tilstanden må prosesser stoppes fra å holde én eller flere ressurser samtidig som de venter på én eller flere andre.

Sirkulær vent

Denne metoden pålegger en total rekkefølge av alle ressurstyper. Sirkulær venteforebygging krever også at hver prosess ber om ressurser i en stigende rekkefølge av opplisting.

Deadlock Unngåelse Algorithms

Det er bedre å unngå en vranglås i stedet for å iverksette tiltak etter at den har oppstått. Unngåelse trenger ytterligere informasjon, for eksempel hvordan ressursene skal brukes. Unngåelse av vranglås er en nyttig modell der hver prosess deklarerer det maksimale antallet ressurser av hver type den kan trenge.

Unngåelse Algorithms

Algoritmen for å unngå vranglåser vurderer ressursallokeringstilstanden dynamisk, slik at en sirkulær ventesituasjon aldri kan oppstå.

For én enkelt forekomst av en ressurstype:

  • Bruk en ressursallokeringsgraf.
  • En syklus i grafen er nødvendig og tilstrekkelig for en vranglås.

For flere forekomster av en ressurstype:

Forskjellen mellom sult og dødlås

Her er noen viktige forskjeller mellom fastlåsthet og sult:

vranglås Sult
En vranglåssituasjon oppstår når en av prosessene blokkeres. Sult er en situasjon der alle lavprioriterte prosesser blokkeres mens høyprioriterte prosesser kjøres.
Deadlock er en uendelig prosess. Sult er en lang ventetid, men ikke en uendelig prosess.
Enhver fastlåst situasjon har alltid sult. Enhver sultesituasjon har ikke nødvendigvis en fastlåst situasjon.
Veillåsing oppstår på grunn av gjensidig utelukkelse, hold og vent, ingen forkjøpsrett og sirkulær venting som oppstår samtidig. Det skjer på grunn av ukontrollert prioritering og dårlig ressursforvaltning.

Fordeler med Deadlock

Her er fordelene med å bruke metoden for håndtering av fastlåste situasjoner:

  • Denne situasjonen fungerer bra for prosesser som utfører et enkelt aktivitetsutbrudd.
  • Ingen forkjøpsrett er nødvendig for vranglås.
  • Det er en praktisk metode når den brukes på ressurser hvis tilstand enkelt kan lagres og gjenopprettes.
  • Det er mulig å håndheve via kontroller under kompilering.
  • Det trenger ingen kjøretidsberegning, siden problemet løses i systemdesignet.

Ulemper med Deadlock

Her er ulempene med å bruke metoden for håndtering av fastlåste situasjoner:

  • Det forsinker oppstart av prosesser.
  • Prosessene må kjenne sine fremtidige ressursbehov på forhånd.
  • Den forebygger oftere enn nødvendig.
  • Den tillater ikke inkrementelle ressursforespørsler.
  • Den har iboende forkjøpstap.

Spørsmål og svar

En vranglås trenger fire Coffman-betingelser for å opprettholdes samtidig: gjensidig utelukkelse, hold og vent, ingen preempsjon og sirkulær vent. Hvis du fjerner én av disse betingelsene, forhindres det at det dannes en vranglås.

Forebygging fjerner en av de fire betingelsene på forhånd, slik at det aldri kan oppstå en fastlåst situasjon. Unngåelse tillater betingelsene, men bruker kjøretidskontroller, som for eksempel Bankerens algoritme, for å holde systemet i en sikker tilstand.

I en vranglås stopper blokkerte prosesser fullstendig og endrer aldri tilstand. livelock, prosesser endrer stadig tilstand og bruker CPU-en, men gjør fortsatt ingen fremgang. Livelock er et spesialtilfelle av ressursmangel.

De fleste generelle systemer, inkludert Windows og Linux, bruk strutsalgoritmen og ignorer sjeldne vranglåser fordi forebygging er kostbart. Databaser og sanntidssystemer kjører i stedet aktive deteksjons- og gjenopprettingsrutiner.

En ressursallokeringsgraf kartlegger prosesser og ressurser som noder forbundet med forespørsels- og tildelingskanter. En syklus i grafen signaliserer en mulig vranglås; med ressurser med én instans betyr en syklus alltid at det finnes en vranglås.

Nei. En ekte vranglås er permanent, fordi de blokkerte prosessene aldri frigjør ressursene sine på egenhånd. Operativsystemet må bryte den ved å forutse en ressurs, rulle tilbake eller avslutte en av prosessene.

Maskinlæringsmodeller lærer ressursforespørselsmønstre for å forutsi og flagge vranglåser før de oppstår. AI-planleggere kan endre rekkefølgen på forespørsler eller finjustere låsepolicyer, noe som er nyttig i databaser, skyplattformer og distribuerte systemer.

Ja. GitHub Copilot kan oppdage risikabel låserekkefølge, foreslå konsekvent låsehenting og generere tester som avdekker vranglåser. Behandle resultatet som en første omgang og verifiser fortsatt samtidighetslogikk med riktige analyseverktøy.

Oppsummer dette innlegget med: