Prosess Synchronisering: Kritisk seksjonsproblem i OS
Hva er prosess Synchronisering?
Prosess Synchronisering er oppgaven med รฅ koordinere gjennomfรธringen av prosesser pรฅ en mรฅte at ingen to prosesser kan ha tilgang til de samme delte dataene og ressursene.
Det er spesielt nรธdvendig i et multiprosesssystem 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 inkonsekvens av delte data. Sรฅ endringen gjort av รฉn 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.
Hvordan prosess SyncVirker hronisering?
For eksempel, prosess A endrer dataene pรฅ et minnested mens en annen prosess B prรธver รฅ lese dataene fra samme minneplassering. Det er stor sannsynlighet for at data som leses av den andre prosessen vil vรฆre feil.
Deler av et program
Her er fire viktige elementer i den kritiske delen:
- Inngangsseksjon: Det er en del av prosessen som bestemmer inngangen til en bestemt prosess.
- Kritisk del: Denne delen lar รฉn prosess legge inn og endre den delte variabelen.
- Avslutt seksjon: Avslutt-seksjonen lar den andre prosessen som venter i inngangsseksjonen, gรฅ inn i de kritiske seksjonene. Den sjekker ogsรฅ at en prosess som fullfรธrte utfรธrelsen skal fjernes gjennom denne delen.
- Resten seksjon: Alle andre deler av Code, som ikke er i kritisk-, inngangs- og utgangsseksjonen, er kjent som restseksjonen.
Hva er kritisk seksjonsproblem?
En kritisk seksjon er et kodesegment som kan nรฅs av en signalprosess pรฅ et bestemt tidspunkt. Seksjonen bestรฅr av delte dataressurser som kreves for รฅ fรฅ tilgang til av andre prosesser.
- Inngangen til den kritiske delen hรฅndteres av wait()-funksjonen, 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 sin kritiske del, mรฅ vente til den nรฅvรฆrende prosessen fullfรธrer utfรธrelsen.
Regler for kritisk seksjon
Den kritiske delen mรฅ hรฅndheve alle tre reglene:
- Gjensidig utelukkelse: Gjensidig ekskludering er en spesiell type binรฆr semafor som brukes til รฅ kontrollere tilgangen til den delte ressursen. Den inkluderer en prioritert arvemekanisme for รฅ unngรฅ problemer med utvidet prioritet inversjon. Ikke mer enn รฉn prosess kan utfรธres i den kritiske delen om gangen.
- Progress: Denne lรธsningen brukes nรฅr ingen er i den kritiske seksjonen, og noen vil inn. Da bรธr de prosessene som ikke er i pรฅminnelsesseksjonen avgjรธre hvem som skal gรฅ inn, i en begrenset tid.
- Innbundet venter: Nรฅr en prosess sender en forespรธrsel om รฅ komme inn i kritisk seksjon, er det en spesifikk grense for antall prosesser som kan komme inn i den kritiske seksjonen. Sรฅ nรฅr grensen er nรฅdd, mรฅ systemet tillate forespรธrsel til prosessen om รฅ komme inn i den kritiske delen.
Lรธsninger til den kritiske delen
Igang Synchronisering, kritisk seksjon spiller hovedrollen slik at problemet mรฅ lรธses.
Her er noen mye 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 informatiker Peterson, det er derfor den er navngitt som en Petersons lรธsning.
I denne lรธsningen, nรฅr en prosess kjรธrer i en kritisk tilstand, kjรธ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 pรฅ et bestemt tidspunkt.
Eksempel
PROCESS Pi
FLAG[i] = true
while( (turn != i) AND (CS is !free) ){ wait;
}
CRITICAL SECTION FLAG[i] = false
turn = j; //choose another process to go to CS
- Anta at det er N prosesser (P1, P2, ... PN) og hver prosess pรฅ et tidspunkt krever รฅ gรฅ inn i den kritiske delen
- Et FLAG[]-array av stรธrrelse N opprettholdes som som standard er falsk. Sรฅ hver gang en prosess krever รฅ gรฅ inn i den kritiske delen, mรฅ den sette flagget som sant. For eksempel, hvis Pi รธnsker รฅ gรฅ inn, vil den sette FLAG[i]=TRUE.
- En annen variabel kalt TURN indikerer prosessnummeret som for รธyeblikket venter pรฅ รฅ 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 ferdige prosesser.
- Eksempel: sving er 2, sรฅ gรฅr P2 inn i den kritiske seksjonen og mens du gรฅr ut av sving = 3 og derfor bryter P3 ut av venteslรธyfen.
Synchronisering maskinvare
Noen ganger lรธses problemene i den kritiske delen ogsรฅ av maskinvare. Noen operativsystemer tilbyr en lรฅsefunksjonalitet der en prosess fรฅr en lรฅs nรฅr den gรฅr inn i den kritiske delen 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 ettersom den er lรฅst. Den kan bare gjรธre det hvis den er gratis ved รฅ skaffe seg selve lรฅsen.
Mutex-lรฅser
Synchronisering maskinvare ikke enkel metode รฅ implementere for alle, sรฅ streng programvaremetode kjent som Mutex Locks ble ogsรฅ introdusert.
I denne tilnรฆrmingen, i inngangsdelen av koden, oppnรฅs en Lร S over de kritiske ressursene som brukes inne i den kritiske delen. I utgangsseksjonen frigjรธres den lรฅsen.
Semaphore Opplรธsning
Semaphore er ganske enkelt en variabel som er ikke-negativ og delt 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 prosesssynkronisering.
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 gjรธr at ingen to prosesser kan ha tilgang til de samme delte dataene og ressursene.
- Fire elementer av kritisk seksjon er 1) Inngangsseksjon 2) Kritisk seksjon 3) Utgangsseksjon 4) Pรฅminnelsesseksjon
- En kritisk seksjon er et kodesegment som kan nรฅs av en signalprosess pรฅ et bestemt tidspunkt.
- Tre mรฅ-regler som mรฅ hรฅndheves av kritiske seksjoner er: 1) Gjensidig utestenging 2) Prosesslรธsning 3) Bundet venter
- Gjensidig ekskludering er en spesiell type binรฆr semafor som brukes til รฅ kontrollere tilgangen til den delte ressursen.
- Prosesslรธsning brukes nรฅr ingen er i den kritiske delen, og noen vil inn.
- I bundet venter-lรธsning, etter at en prosess sender en forespรธrsel om รฅ komme inn i den kritiske delen, er det en grense for hvor mange andre prosesser som kan komme inn i den kritiske delen.
- Petersons lรธsning er mye brukt lรธsning pรฅ kritiske seksjonsproblemer.
- Problemer i den kritiske delen lรธses ogsรฅ ved synkronisering av maskinvare
- Synchroniseringsmaskinvare 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.


