Proces Synchronisering: Kritisk sektionsproblem i OS

Hvad er proces Synchronisering?

Proces Synchronisering er opgaven med at koordinere udførelsen af ​​processer på en måde, så ikke to processer kan få adgang til de samme fælles data og ressourcer.

Det er specielt nødvendigt i et multi-proces system, når flere processer kører sammen, og mere end én proces forsøger at få adgang til den samme delte ressource eller data på samme tid.

Dette kan føre til inkonsekvens af delte data. Så ændringen foretaget af én proces afspejles ikke nødvendigvis, når andre processer fik adgang til de samme delte data. For at undgå denne type inkonsistens af data, skal processerne synkroniseres med hinanden.

Hvordan proces SyncHronisering virker?

For eksempel ændrer proces A dataene på en hukommelsesplacering, mens en anden proces B forsøger at læse dataene fra samme hukommelsesplacering. Der er stor sandsynlighed for, at data læst af den anden proces vil være forkerte.

Proces Synchronisering virker

Afsnit af et program

Her er fire væsentlige elementer i det kritiske afsnit:

  • Indgangssektion: Det er en del af processen, der bestemmer indgangen til en bestemt proces.
  • Kritisk sektion: Denne del tillader én proces at indtaste og ændre den delte variabel.
  • Afslut sektion: Afslut sektionen tillader den anden proces, der venter i indgangssektionen, at gå ind i de kritiske sektioner. Den kontrollerer også, at en proces, der afsluttede sin udførelse, skal fjernes gennem dette afsnit.
  • Resten sektion: Alle andre dele af kodeksen, som ikke er i kritiske, indgangs- og udgangssektioner, er kendt som restafsnittet.

Hvad er et kritisk sektionsproblem?

En kritisk sektion er et kodesegment, som kan tilgås af en signalproces på et bestemt tidspunkt. Sektionen består af delte dataressourcer, som skal tilgås af andre processer.

  • Indgangen til den kritiske sektion håndteres af wait()-funktionen, og den er repræsenteret som P().
  • Udgangen fra en kritisk sektion styres af signal()-funktionen, repræsenteret som V().

I det kritiske afsnit kan kun en enkelt proces udføres. Andre processer, der venter på at udføre deres kritiske sektion, skal vente, indtil den aktuelle proces fuldfører sin eksekvering.

Regler for Kritisk Sektion

Det kritiske afsnit skal håndhæve alle tre regler:

  • Gensidig udelukkelse: Gensidig udelukkelse 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. Ikke mere end én proces kan udføres i dens kritiske sektion ad gangen.
  • fremskridt: Denne løsning bruges, når ingen er i det kritiske afsnit, og nogen vil ind. Så bør de processer, der ikke er i deres rykkerafsnit, afgøre, hvem der skal gå ind, inden for en begrænset tid.
  • Bundne venter: Når en proces fremsætter en anmodning om at komme ind i kritisk sektion, er der en specifik grænse for antallet af processer, der kan komme ind i deres kritiske sektion. Så når grænsen er nået, skal systemet tillade anmodning til processen at komme ind i dens kritiske sektion.

Løsninger til det kritiske afsnit

Under behandling Synchronisering, kritisk afsnit spiller hovedrollen, så problemet skal løses.

Her er nogle udbredte metoder til at løse det kritiske afsnitsproblem.

Peterson løsning

Petersons løsning er meget udbredt løsning på kritiske sektionsproblemer. Denne algoritme blev udviklet af en datalog Peterson, og det er derfor, den er navngivet som en Petersons løsning.

I denne løsning, når en proces udføres i en kritisk tilstand, udfører den anden proces kun resten af ​​koden, og det modsatte kan ske. Denne metode hjælper også med at sikre, at kun en enkelt proces kører i den kritiske sektion på et bestemt tidspunkt.

Eksempel

Løsninger til det kritiske afsnit

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
  • Antag, at der er N processer (P1, P2, … PN), og hver proces på et tidspunkt kræver at gå ind i den kritiske sektion
  • Et FLAG[]-array af størrelse N opretholdes, som som standard er falsk. Så hver gang en proces kræver at gå ind i den kritiske sektion, skal den indstille sit flag som sandt. For eksempel, hvis Pi ønsker at komme ind, vil den sætte FLAG[i]=TRUE.
  • En anden variabel kaldet TURN angiver procesnummeret, som i øjeblikket venter på at komme ind i CS.
  • Processen, der går ind i den kritiske sektion, mens den afsluttes, vil ændre TURN til et andet nummer fra listen over klar-processer.
  • Eksempel: tur er 2, så kommer P2 ind i den kritiske sektion, og mens du forlader tur = 3, og derfor bryder P3 ud af venteløkken.

Synchronisering Hardware

Nogle gange løses problemerne i den kritiske sektion også af hardware. Nogle operativsystemer tilbyder en låsefunktion, hvor en proces opnår en lås, når den går ind i den kritiske sektion og frigiver låsen efter at have forladt den.

Så når en anden proces forsøger at komme ind i den kritiske sektion, vil den ikke være i stand til at komme ind, da den er låst. Det kan den kun, hvis den er gratis ved at anskaffe sig selve låsen.

Mutex låse

Synchronization hardware ikke enkel metode at implementere for alle, så streng software metode kendt som Mutex Locks blev også introduceret.

I denne tilgang, i indgangssektionen af ​​koden, opnås en LÅS over de kritiske ressourcer, der bruges inde i den kritiske sektion. I udgangssektionen udløses denne lås.

Semaphore Løsning

Semaphore er simpelthen en variabel, der er ikke-negativ og deles mellem tråde. Det er en anden algoritme eller løsning på det kritiske sektionsproblem. Det er en signalmekanisme og en tråd, der venter på en semafor, som kan signaleres af en anden tråd.

Den bruger to atomoperationer, 1) vent og 2) signal til processynkronisering.

Eksempel

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

Resumé

  • Processynkronisering er opgaven med at koordinere udførelsen af ​​processer på en måde, så ikke to processer kan have adgang til de samme delte data og ressourcer.
  • Fire elementer i kritisk sektion er 1) Indgangssektion 2) Kritisk sektion 3) Udgangssektion 4) Påmindelsessektion
  • En kritisk sektion er et kodesegment, som kan tilgås af en signalproces på et bestemt tidspunkt.
  • Tre must-regler, som skal håndhæves efter kritiske sektioner er: 1) Gensidig udelukkelse 2) Procesløsning 3) bundet afventning
  • Gensidig udelukkelse er en speciel type binær semafor, som bruges til at kontrollere adgangen til den delte ressource.
  • Procesløsning bruges, når ingen er i det kritiske afsnit, og nogen vil ind.
  • I bundet venteløsning, efter at en proces fremsætter en anmodning om at komme ind i dens kritiske sektion, er der en grænse for, hvor mange andre processer, der kan komme ind i deres kritiske sektion.
  • Petersons løsning er meget udbredt løsning på kritiske sektionsproblemer.
  • Problemer i den kritiske sektion løses også ved synkronisering af hardware
  • SyncHroniseringshardware er ikke en enkel metode at implementere for alle, så den strenge softwaremetode kendt som Mutex Locks blev også introduceret.
  • Semaphore er en anden algoritme eller løsning på det kritiske sektionsproblem.