Behandla Synchronisering: Kritisk sektionsproblem i OS
Vad är process Synchronisering?
Behandla Synchronisering ä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.
Det behövs speciellt i ett multiprocesssystem när flera processer körs tillsammans och mer än en process försöker få tillgång till samma delade resurs eller data samtidigt.
Detta kan leda till inkonsekvens i delad data. Så förändringen som gjorts av en process återspeglas inte nödvändigtvis när andra processer fick åtkomst till samma delade data. För att undvika denna typ av inkonsekvens av data måste processerna synkroniseras med varandra.
Hur Process SyncHronization Fungerar?
Till exempel, process A ändrar data på en minnesplats medan en annan process B försöker läsa data från Samma minnesplats. Det finns en stor sannolikhet att data som läses av den andra processen kommer att vara felaktiga.
Delar av ett program
Här är fyra väsentliga delar av det kritiska avsnittet:
- Ingångssektion: Det är en del av processen som avgör inträdet i en viss process.
- Kritisk sektion: Denna del tillåter en process att ange och ändra den delade variabeln.
- Avsluta avsnitt: Avsluta sektionen låter den andra processen som väntar i ingångssektionen gå in i de kritiska sektionerna. Den kontrollerar också att en process som avslutat sin körning ska tas bort via detta avsnitt.
- Återstående avsnitt: Alla andra delar av koden, som inte finns i Kritisk, Ingångs- och Utträdessektionen, kallas Remainder Section.
Vad är problem med kritisk sektion?
En kritisk sektion är ett kodsegment som kan nås av en signalprocess vid en specifik tidpunkt. Sektionen består av delade dataresurser som krävs för att kunna nås av andra processer.
- Ingången till den kritiska sektionen hanteras av funktionen wait() och den representeras som P().
- Utgången från en kritisk sektion styrs av signal()-funktionen, representerad som V().
I det kritiska avsnittet kan endast en enda process köras. Andra processer, som väntar på att exekvera sin kritiska sektion, måste vänta tills den aktuella processen har slutfört sin exekvering.
Regler för kritisk sektion
Den kritiska delen måste tillämpa 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 inkluderar en prioritetsärvningsmekanism för att undvika problem med utökad prioritetsinversion. Inte mer än en process kan köras i dess kritiska sektion samtidigt.
- framsteg: Den här lösningen används när ingen är i den kritiska sektionen, och någon vill in. Då bör de processer som inte finns i deras påminnelseavsnitt avgöra vem som ska gå in, inom en begränsad tid.
- Bound Waiting: När en process gör en begäran om att komma in i kritisk sektion, finns det en specifik gräns för hur många processer som kan komma in i deras kritiska sektion. Så när gränsen nås måste systemet tillåta begäran till processen att komma in i dess kritiska sektion.
Lösningar till den kritiska sektionen
Pågående Synchronisering, kritisk sektion spelar 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 är mycket använd lösning på kritiska sektionsproblem. Denna algoritm har utvecklats 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 ett kritiskt tillstånd, exekverar den andra processen bara resten av koden, och motsatsen kan hända. Denna metod hjälper också till att säkerställa att endast en enda process körs i den kritiska delen vid en specifik tidpunkt.
Exempelvis
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 att det finns N processer (P1, P2, … PN) och att varje process vid någon tidpunkt måste gå in i den kritiska sektionen
- En FLAGGA[]-array av storlek N bibehålls som som standard är falsk. Så närhelst en process kräver att gå in i den kritiska delen måste den ställa in sin flagga som sann. Till exempel, om Pi vill komma in kommer den att ställa in FLAGGA[i]=TRUE.
- En annan variabel som kallas TURN indikerar processnumret som för närvarande väntar på att komma in i CS.
- Processen som går in i den kritiska sektionen när du lämnar skulle ändra TURN till ett annat nummer från listan över färdiga processer.
- Exempel: tur är 2 då P2 går in i den kritiska sektionen och när man lämnar tur = 3 och därför bryter P3 ur vänteloopen.
Synchronisering Hårdvara
Ibland löses problemen med den kritiska sektionen också av hårdvara. Vissa operativsystem erbjuder en låsfunktion där en process får ett lås när den går in i avsnittet Kritisk och släpper låset efter att ha lämnat det.
Så när en annan process försöker komma in i den kritiska delen kommer den inte att kunna komma 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
Synchronization hårdvara inte enkel metod att implementera för alla, så strikt mjukvarumetod känd som Mutex Locks introducerades också.
I detta tillvägagångssätt, i ingångssektionen av koden, erhålls ett LÅS över de kritiska resurserna som används inuti den kritiska sektionen. I utgångssektionen släpps det låset.
Semaphore Lösning
Semaphore är helt enkelt en variabel som är icke-negativ och delad mellan trådar. Det är en annan algoritm eller lösning på det kritiska avsnittsproblemet. 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 processsynkronisering.
Exempelvis
WAIT ( S ): while ( S <= 0 ); S = S - 1; SIGNAL ( S ): S = S + 1;
Sammanfattning
- Processsynkronisering är uppgiften att koordinera exekveringen av processer på ett sätt så att inte två processer kan ha tillgång till samma delade data och resurser.
- Fyra delar av kritisk sektion är 1) Ingångssektion 2) Kritisk sektion 3) Utgångssektion 4) Påminnelsedel
- En kritisk sektion är ett kodsegment som kan nås av en signalprocess vid en specifik tidpunkt.
- Tre måste-regler som måste tillämpas av kritiska avsnitt är: 1) Ömsesidig uteslutning 2) Processlösning 3) Bundna 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 är i den kritiska delen och någon vill in.
- I bunden väntande lösning, efter att en process gör en begäran om att komma in i sin kritiska sektion, finns det en gräns för hur många andra processer som kan komma in i deras kritiska sektion.
- Petersons lösning är mycket använd lösning på kritiska sektionsproblem.
- Problem i den kritiska sektionen löses också genom synkronisering av hårdvara
- Synchroniseringshårdvara är inte en enkel metod att implementera för alla, så den strikta mjukvarumetoden som kallas Mutex Locks introducerades också.
- Semaphore är en annan algoritm eller lösning på det kritiska avsnittsproblemet.