Prosesssynkronisering: Kritisk seksjonsproblem i operativsystemet

Innholdsfortegnelse:

Anonim

Hva er prosesssynkronisering?

Prosesssynkronisering er oppgaven med å koordinere utførelsen av prosesser på en måte som ikke to prosesser kan ha tilgang til samme delte data og ressurser.

Det er spesielt nødvendig i et flerprosessystem når flere prosesser kjører sammen, og mer enn én prosess prøver å få tilgang til samme delte ressurs eller data samtidig.

Dette kan føre til inkonsekvensen av delte data. Så endringen som ble gjort av en prosess, gjenspeiles ikke nødvendigvis når andre prosesser fikk tilgang til de samme delte dataene. For å unngå denne typen inkonsekvens av data, må prosessene synkroniseres med hverandre.

I denne veiledningen til operativsystemet vil du lære:

  • Hva er prosesssynkronisering?
  • Hvordan prosesssynkronisering fungerer?
  • Seksjoner av et program
  • Hva er kritisk seksjonsproblem?
  • Regler for kritisk seksjon
  • Løsninger på den kritiske delen

Hvordan prosesssynkronisering fungerer?

For eksempel kan prosess A endre dataene på et minneplassering mens en annen prosess B prøver å lese dataene fra samme minneplassering. Det er stor sannsynlighet for at data lest av den andre prosessen vil være feil.

Seksjoner av et program

Her er fire viktige elementer i den kritiske delen:

  • Inngangsseksjon: Det er en del av prosessen som bestemmer innføringen av en bestemt prosess.
  • Kritisk del: Denne delen lar en prosess gå inn og endre den delte variabelen.
  • Avslutt seksjon: Avslutt seksjon lar den andre prosessen som venter i inngangsseksjonen, gå inn i de kritiske seksjonene. Den sjekker også at en prosess som avsluttet utførelsen, bør fjernes gjennom denne seksjonen.
  • Restenes seksjon: Alle andre deler av koden, som ikke er i delen Kritisk, inngang og utgang, er kjent som Resten.

Hva er kritisk seksjonsproblem?

En kritisk seksjon er et kodesegment som kan nås via en signalprosess på et bestemt tidspunkt. Seksjonen består av delte dataressurser som kreves tilgang til av andre prosesser.

  • Oppføringen til den kritiske delen håndteres av ventefunksjonen (), og den er representert som P ().
  • Utgangen fra en kritisk seksjon styres av signal () -funksjonen, representert som V ().

I den kritiske delen kan bare en enkelt prosess utføres. Andre prosesser som venter på å utføre den kritiske delen, må vente til den nåværende prosessen er fullført.

Regler for kritisk seksjon

Den kritiske delen må håndheve alle tre reglene:

  • Gjensidig utelukkelse: Gjensidig utelukkelse er en spesiell type binær semafor som brukes til å kontrollere tilgang til den delte ressursen. Den inkluderer en prioritetsarvemekanisme for å unngå utvidede prioritetsinversjonsproblemer. Ikke mer enn en prosess kan utføres i sin kritiske del om gangen.
  • Fremgang: Denne løsningen brukes når ingen er i den kritiske delen, og noen vil inn. Da bør de prosessene som ikke er i deres påminnelsesdel bestemme hvem som skal gå inn på en endelig tid.
  • Bundet venting: Når en prosess ber om å komme inn i kritisk del, er det en spesifikk grense for antall prosesser som kan komme inn i deres kritiske del. Så når grensen er nådd, må systemet tillate forespørsel til prosessen for å komme inn i den kritiske delen.

Løsninger på den kritiske delen

I prosesssynkronisering spiller den kritiske delen hovedrollen slik at problemet må løses.

Her er noen brukte metoder for å løse det kritiske seksjonsproblemet.

Peterson-løsning

Petersons løsning er mye brukt løsning på kritiske seksjonsproblemer. Denne algoritmen ble utviklet av en datavitenskapsmann Peterson, det er derfor den blir kalt som en Petersons løsning.

I denne løsningen, når en prosess kjøres i kritisk tilstand, utfører den andre prosessen bare resten av koden, og det motsatte kan skje. Denne metoden bidrar også til å sikre at bare en enkelt prosess kjører i den kritiske delen til et bestemt tidspunkt.

Eksempel

PROCESS PiFLAG[i] = truewhile( (turn != i) AND (CS is !free) ){ wait;}CRITICAL SECTION FLAG[i] = falseturn = j; //choose another process to go to CS
  • Anta at det er N-prosesser (P1, P2,… PN), og hver prosess på et tidspunkt krever å komme inn i den kritiske delen
  • En FLAG [] matrise av størrelse N opprettholdes som standard er false. Så når en prosess krever å komme inn i den kritiske delen, må den sette flagget som sant. Hvis Pi for eksempel vil gå inn, vil den sette FLAG [i] = SANT.
  • En annen variabel kalt TURN indikerer prosessnummeret som for øyeblikket vanner for å gå inn i CS.
  • Prosessen som går inn i den kritiske delen mens du avslutter, vil endre TURN til et annet nummer fra listen over klare prosesser.
  • Eksempel: sving er 2, så kommer P2 inn i den kritiske delen, og mens du går ut av sving = 3, bryter derfor P3 ut av ventesløyfen.

Maskinvare for synkronisering

Noen ganger løses også problemene i den kritiske delen av maskinvare. Noen operativsystemer tilbyr en låsefunksjonalitet der en prosess anskaffer en lås når den går inn i kritisk seksjon og frigjør låsen etter å ha forlatt den.

Så når en annen prosess prøver å gå inn i den kritiske delen, vil den ikke kunne gå inn da den er låst. Det kan bare gjøres hvis det er gratis ved å skaffe seg låsen.

Mutex låser

Synkroniseringsmaskinvare ikke enkel metode å implementere for alle, så streng programvaremetode kjent som Mutex Locks ble også introdusert.

I denne tilnærmingen, i inngangsdelen av kode, oppnås en LÅS over de kritiske ressursene som brukes i den kritiske delen. I utgangsseksjonen frigjøres låsen.

Semaphore-løsning

Semafor er ganske enkelt en variabel som ikke er negativ og deles mellom tråder. Det er en annen algoritme eller løsning på det kritiske seksjonsproblemet. Det er en signalmekanisme og en tråd som venter på en semafor, som kan signaliseres av en annen tråd.

Den bruker to atomoperasjoner, 1) vent og 2) signal for prosesssynkroniseringen.

Eksempel

WAIT ( S ):while ( S <= 0 );S = S - 1;SIGNAL ( S ):S = S + 1;

Sammendrag:

  • Prosesssynkronisering er oppgaven med å koordinere utførelsen av prosesser på en måte som ikke to prosesser kan ha tilgang til samme delte data og ressurser.
  • Fire elementer i kritisk seksjon er 1) Inngangsseksjon 2) Kritisk seksjon 3) Avslutt seksjon 4) Påminnelsesdel
  • En kritisk seksjon er et kodesegment som kan nås via en signalprosess på et bestemt tidspunkt.
  • Tre må-regler som må håndheves ved kritisk del er: 1) Gjensidig utelukkelse 2) Prosessløsning 3) Bundet ventetid
  • Gjensidig ekskludering er en spesiell type binær semafor som brukes til å kontrollere tilgangen til den delte ressursen.
  • Prosessløsningen brukes når ingen er i den kritiske delen, og noen vil inn.
  • I bunden venteløsning, etter at en prosess ber om å komme inn i den kritiske delen, er det en grense for hvor mange andre prosesser som kan komme inn i deres kritiske del.
  • Petersons løsning er mye brukt løsning på kritiske seksjonsproblemer.
  • Problemer med den kritiske delen løses også ved synkronisering av maskinvare
  • Synkroniseringsmaskinvare er ikke en enkel metode å implementere for alle, så den strenge programvaremetoden kjent som Mutex Locks ble også introdusert.
  • Semaphore er en annen algoritme eller løsning på det kritiske seksjonsproblemet.