Processynkronisering: Kritisk sektionsproblem i OS

Indholdsfortegnelse:

Anonim

Hvad er processynkronisering?

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.

Det er specielt nødvendigt i et multi-processystem, når flere processer kører sammen, og mere end en 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 en proces afspejlede sig ikke nødvendigvis, når andre processer fik adgang til de samme delte data. For at undgå denne type inkonsekvens af data skal processerne synkroniseres med hinanden.

I denne operativsystemvejledning lærer du:

  • Hvad er processynkronisering?
  • Hvordan processynkronisering fungerer?
  • Sektioner af et program
  • Hvad er kritisk sektionsproblem?
  • Regler for kritisk sektion
  • Løsninger til det kritiske afsnit

Hvordan processynkronisering fungerer?

For eksempel kan proces A ændre data på et hukommelsessted, mens en anden proces B forsøger at læse dataene fra den samme hukommelsesplacering. Der er stor sandsynlighed for, at data, der læses ved den anden proces, er fejlagtige.

Sektioner af et program

Her er fire vigtige elementer i det kritiske afsnit:

  • Indgangssektion: Det er en del af processen, der bestemmer indførelsen af ​​en bestemt proces.
  • Kritisk afsnit: Denne del tillader en proces at indtaste og ændre den delte variabel.
  • Afslut sektion: Afslut sektion tillader den anden proces, der venter i indgangssektionen, at gå ind i de kritiske sektioner. Den kontrollerer også, at en proces, der afsluttede dens udførelse, skulle fjernes gennem dette afsnit.
  • Resten sektion: Alle andre dele af koden, som ikke er i sektionen Kritisk, indgang og udgang, er kendt som Resten sektion.

Hvad er kritisk sektionsproblem?

Et kritisk afsnit er et kodesegment, som kan tilgås ved hjælp af en signalproces på et bestemt tidspunkt. Sektionen består af delte dataressourcer, som andre processer skal have adgang til.

  • Indgangen til det kritiske afsnit håndteres af funktionen wait (), og den er repræsenteret som P ().
  • Udgangen fra en kritisk sektion styres af signalfunktionen () 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 dens udførelse.

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, der bruges til at kontrollere adgangen til den delte ressource. Det inkluderer en prioritetsarvemekanisme for at undgå udvidede prioritetsinversionsproblemer. Ikke mere end en proces kan udføres i det kritiske afsnit ad gangen.
  • Fremskridt: Denne løsning bruges, når ingen er i det kritiske afsnit, og nogen vil ind. Derefter skal disse processer, der ikke er i deres påmindelsesafsnit, beslutte, hvem der skal gå ind på et begrænset tidspunkt.
  • Bundet ventetid: Når en proces fremsætter en anmodning om at komme ind i et kritisk afsnit, er der en specifik grænse for antallet af processer, der kan komme ind i deres kritiske afsnit. Så når grænsen er nået, skal systemet tillade anmodning til processen at komme ind i sit kritiske afsnit.

Løsninger til det kritiske afsnit

I processynkronisering spiller det kritiske afsnit hovedrollen, så problemet skal løses.

Her er nogle almindeligt anvendte metoder til at løse det kritiske sektionsproblem.

Peterson-løsning

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

I denne løsning, når en proces udføres i 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 det kritiske afsnit på 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
  • Antag, at der er N-processer (P1, P2, ... PN), og hver proces på et eller andet tidspunkt kræver at komme ind i den kritiske sektion
  • Et FLAG [] -array af størrelse N opretholdes, hvilket som standard er falsk. Så når en proces kræver adgang til det kritiske afsnit, skal den indstille sit flag som sandt. For eksempel, hvis Pi ønsker at komme ind, vil den indstille FLAG [i] = SAND.
  • En anden variabel kaldet TURN indikerer det procesnummer, der i øjeblikket vander for at komme ind i CS.
  • Processen, der går ind i det kritiske afsnit under afslutning, vil ændre TURN til et andet nummer fra listen over klare processer.
  • Eksempel: drej er 2, så kommer P2 ind i den kritiske sektion, og mens du afslutter drej = 3, bryder P3 derfor ud af ventesløjfen.

Synkroniseringshardware

Nogle gange løses problemerne i den kritiske sektion også med hardware. Nogle operativsystemer tilbyder en låsefunktionalitet, hvor en proces erhverver en lås, når den går ind i den kritiske sektion og frigiver låsen, når den forlader den.

Så når en anden proces forsøger at komme ind i det kritiske afsnit, kan den ikke komme ind, da den er låst. Det kan kun gøre, hvis det er gratis ved at anskaffe selve låsen.

Mutex låse

Synkroniseringshardware ikke enkel metode til implementering for alle, så der blev også indført en streng softwaremetode kendt som Mutex Locks.

I denne tilgang opnås en LÅS i indgangssektionen af ​​kode over de kritiske ressourcer, der bruges i den kritiske sektion. I udgangssektionen frigøres denne lås.

Semaphore-løsning

Semafor 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 signaliseres af en anden tråd.

Den bruger to atomoperationer, 1) ventetid og 2) signal til procssynkroniseringen.

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) Afslut sektion 4) Påmindelse
  • Et kritisk afsnit er et kodesegment, som kan tilgås ved hjælp af en signalproces på et bestemt tidspunkt.
  • Tre must-regler, som skal håndhæves ved et kritisk afsnit, er: 1) Gensidig udelukkelse 2) Processløsning 3) Bundet ventetid
  • Gensidig udelukkelse er en speciel type binær semafor, der bruges til at kontrollere adgangen til den delte ressource.
  • Procesløsningen bruges, når ingen er i det kritiske afsnit, og nogen vil ind.
  • I en bunden venteløsning, efter at en proces har anmodet 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 afsnit.
  • Petersons løsning er meget brugt løsning på kritiske sektionsproblemer.
  • Problemer i den kritiske sektion løses også ved synkronisering af hardware
  • Synkroniseringshardware er ikke en simpel metode til implementering 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.