Processynkronisering: Kritiskt avsnitt Problem i OS

Innehållsförteckning:

Anonim

Vad är processynkronisering?

Processynkronisering är uppgiften att samordna körningen av processer på ett sätt så att inga två processer kan ha åtkomst till samma delade data och resurser.

Det behövs speciellt i ett system med flera processer när flera processer körs tillsammans, och mer än en process försöker få åtkomst till samma delade resurs eller data samtidigt.

Detta kan leda till inkonsekvens av delad data. Så en förändring som gjorts av en process återspeglas inte nödvändigtvis när andra processer har åtkomst till samma delade data. För att undvika denna typ av inkonsekvens av data måste processerna synkroniseras med varandra.

I denna handledning för operativsystem lär du dig:

  • Vad är processynkronisering?
  • Hur processynkronisering fungerar?
  • Avsnitt av ett program
  • Vad är kritiskt avsnittsproblem?
  • Regler för kritisk sektion
  • Lösningar på det kritiska avsnittet

Hur processynkronisering fungerar?

Till exempel kan process A ändra data på en minnesplats medan en annan process B försöker läsa data från samma minnesplats. Det är mycket troligt att data som läses av den andra processen kommer att vara felaktiga.

Avsnitt av ett program

Här är fyra viktiga delar av det kritiska avsnittet:

  • Inträdesavdelning: Det är en del av processen som bestämmer inmatningen av en viss process.
  • Kritisk sektion: Denna del tillåter en process att ange och ändra den delade variabeln.
  • Avslutningsavsnitt: Avslutningsavsnittet tillåter den andra processen som väntar i inmatningsavsnittet att gå in i de kritiska avsnitten. Det kontrollerar också att en process som slutförde genomförandet ska tas bort genom detta avsnitt.
  • Resterande avsnitt: Alla andra delar av koden, som inte finns i avsnittet Kritisk, inträde och utgång, kallas Resten avsnitt.

Vad är kritiskt avsnittsproblem?

En kritisk sektion är ett kodsegment som kan nås genom en signalprocess vid en viss tidpunkt. Avsnittet består av delade dataresurser som krävs för åtkomst av andra processer.

  • Inmatningen till det kritiska avsnittet hanteras av funktionen wait () och den representeras som P ().
  • Utgången från ett kritiskt avsnitt styrs av signalfunktionen (), representerad som V ().

I det kritiska avsnittet kan bara en enda process köras. Andra processer, som väntar på att utföra sitt kritiska avsnitt, måste vänta tills den aktuella processen är klar.

Regler för kritisk sektion

Det kritiska avsnittet måste uppfylla alla tre reglerna:

  • Ömsesidig uteslutning: Ömsesidig uteslutning är en speciell typ av binär semafor som används för att kontrollera åtkomst till den delade resursen. Den innehåller en prioriterad ärvsmekanism för att undvika utökade prioritetsinversionsproblem. Inte mer än en process kan köras i dess kritiska avsnitt samtidigt.
  • Framsteg: Denna lösning används när ingen befinner sig i det kritiska avsnittet och någon vill in. Då bör de processerna som inte finns i påminnelsedelen bestämma vem som ska gå in på en begränsad tid.
  • Bound Waiting: När en process gör en begäran om att komma in i kritiska avsnitt finns det en specifik gräns för hur många processer som kan komma in i deras kritiska avsnitt. Så när gränsen uppnås måste systemet tillåta förfrågan till processen för att komma in i dess kritiska avsnitt.

Lösningar på det kritiska avsnittet

I processynkronisering spelar kritiskt avsnitt huvudrollen så att problemet måste lösas.

Här är några allmänt använda metoder för att lösa det kritiska avsnittsproblemet.

Peterson-lösning

Petersons lösning används ofta för att lösa kritiska sektionsproblem. Denna algoritm utvecklades av en datavetare Peterson, det är därför den heter som en Petersons lösning.

I den här lösningen, när en process körs i kritiskt tillstånd, kör den andra processen bara resten av koden, och det motsatta kan hända. Denna metod hjälper också till att se till att endast en enda process körs i det kritiska avsnittet vid en viss tidpunkt.

Exempel

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 att det finns N-processer (P1, P2, ... PN) och varje process vid någon tidpunkt kräver att du går in i det kritiska avsnittet
  • En FLAG [] -matris av storlek N upprätthålls, vilket som standard är falskt. Så när en process kräver att du går in i det kritiska avsnittet måste den ställa in sin flagga som sann. Till exempel, om Pi vill komma in kommer det att ställa in FLAGG [i] = SANT.
  • En annan variabel som heter TURN indikerar det processnummer som för närvarande vattnar för att komma in i CS.
  • Processen som går in i det kritiska avsnittet när du avslutar skulle ändra TURN till ett annat nummer från listan över färdiga processer.
  • Exempel: sväng är 2 och sedan kommer P2 in i avsnittet Kritisk och medan du svänger sväng = 3 och därför bryter P3 ut ur vänteslingan.

Synkroniseringshårdvara

Ibland löses problemen i den kritiska delen också med hårdvara. Vissa operativsystem erbjuder en låsfunktion där en process förvärvar ett lås när man går in i den kritiska delen och släpper låset efter att ha lämnat det.

Så när en annan process försöker komma in i det kritiska avsnittet kommer den inte att kunna gå in eftersom den är låst. Det kan bara göra det om det är gratis genom att skaffa själva låset.

Mutex-lås

Synkroniseringshårdvara inte enkel metod att implementera för alla, så strikt programvarumetod som kallas Mutex Locks introducerades också.

I detta tillvägagångssätt, i ingångssektionen för kod, erhålls en LÅS över de kritiska resurser som används i den kritiska delen. I utgångssektionen släpps låset.

Semaphore-lösning

Semafor är helt enkelt en variabel som inte är negativ och delas mellan trådarna. Det är en annan algoritm eller lösning på problemet med kritiska avsnitt. Det är en signalmekanism och en tråd som väntar på en semafor, som kan signaleras av en annan tråd.

Den använder två atomoperationer, 1) vänta och 2) signal för processynkronisering.

Exempel

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

Sammanfattning:

  • Processynkronisering är uppgiften att samordna exekveringen av processer på ett sätt så att inte två processer kan ha tillgång till samma delade data och resurser.
  • Fyra element i kritisk sektion är 1) Inmatningsavsnitt 2) Kritiskt avsnitt 3) Avslutningsavsnitt 4) Påminnelsesektion
  • En kritisk sektion är ett kodsegment som kan nås genom en signalprocess vid en viss tidpunkt.
  • Tre måsteregler som måste tillämpas genom kritiska avsnitt är: 1) Ömsesidig uteslutning 2) Processlösning 3) Bunden väntan
  • Ömsesidig uteslutning är en speciell typ av binär semafor som används för att kontrollera åtkomst till den delade resursen.
  • Processlösning används när ingen befinner sig i det kritiska avsnittet och någon vill ha det.
  • I bunden väntelösning, efter att en process gör en begäran om att komma in i dess kritiska avsnitt, finns det en gräns för hur många andra processer som kan komma in i deras kritiska avsnitt.
  • Petersons lösning används ofta för att lösa kritiska sektionsproblem.
  • Problemen i den kritiska sektionen löses också genom synkronisering av hårdvara
  • Synkroniseringshårdvara är inte en enkel metod att implementera för alla, så den strikta programvarumetoden som kallas Mutex Locks infördes också.
  • Semaphore är en annan algoritm eller lösning på problemet med kritiska avsnitt.