Vad är Semaphore? Binära, räkne typer med exempel

Innehållsförteckning:

Anonim

Vad är Semaphore?

Semafor är helt enkelt en variabel som inte är negativ och delas mellan trådarna. En semafor är en signalmekanism och en tråd som väntar på en semafor kan signaleras av en annan tråd. Den använder två atomoperationer, 1) vänta och 2) signal för processynkronisering.

En semafor tillåter eller tillåter inte åtkomst till resursen, vilket beror på hur den är inställd.

I den här handboken för operativsystem lär du dig:

  • Kännetecknande för Semaphore
  • Vad är Semaphore?
  • Typer av semaforer
  • Exempel på Semaphore
  • Vänta och signaloperationer i semaforer
  • Räknar Semaphore vs Binary Semaphore
  • Skillnad mellan Semaphore och Mutex
  • Fördelar med semaforer
  • Nackdelen med semaforer

Kännetecknande för Semaphore

Här är karakteristiska för en semafor:

  • Det är en mekanism som kan användas för att tillhandahålla synkronisering av uppgifter.
  • Det är en lågnivåsynkroniseringsmekanism.
  • Semafor kommer alltid att ha ett icke-negativt heltal.
  • Semaphore kan implementeras med hjälp av testoperationer och avbrott, som ska köras med filbeskrivare.

Typer av semaforer

De två vanliga typerna av semaforer är

  • Räknar semaforer
  • Binära semaforer.

Räknar semaforer

Denna typ av Semaphore använder ett antal som hjälper uppgiften att förvärvas eller släppas flera gånger. Om den ursprungliga räkningen = 0, bör räkningssemaforen skapas i det otillgängliga tillståndet.

Om räkningen är> 0 skapas emellertid semaforen i tillgängligt tillstånd och antalet token som den har motsvarar räkningen.

Binära semaforer

De binära semaforerna är ganska lika med att räkna semaforer, men deras värde är begränsat till 0 och 1. I denna typ av semafor fungerar väntetiden endast om semafor = 1 och signaloperationen lyckas när semafor = 0. Det är lätt att implementera än att räkna semaforer.

Exempel på Semaphore

Nedanstående program är steg för steg implementering, vilket innebär användning och deklaration av semafor.

Shared var mutex: semaphore = 1;Process ibegin… P(mutex);execute CS;V(mutex);… End;

Vänta och signaloperationer i semaforer

Båda dessa operationer används för att implementera processynkronisering. Målet med denna semaforoperation är att få ömsesidig utestängning.

Vänta på drift

Denna typ av semaforoperation hjälper dig att styra inmatningen av en uppgift i det kritiska avsnittet. Men om värdet på väntan är positivt minskas värdet på väntargumentet X. Vid negativt värde eller nollvärde utförs ingen åtgärd. Det kallas också P (S) -operation.

Efter att semaforvärdet har minskat, vilket blir negativt, hålls kommandot tills de nödvändiga villkoren är uppfyllda.

Copy CodeP(S){while (S<=0);S--;}

Signalfunktion

Denna typ av Semaphore-operation används för att styra utgången av en uppgift från ett kritiskt avsnitt. Det hjälper till att öka värdet på argumentet med 1, vilket betecknas som V (S).

Copy CodeP(S){while (S>=0);S++;}

Räknar Semaphore vs Binary Semaphore

Här är några stora skillnader mellan räkning och binär semafor:

Räknar Semaphore Binär semafor
Ingen ömsesidig utestängning Ömsesidig uteslutning
Alla heltal Värde endast 0 och 1
Mer än en plats Endast en plats
Ge en uppsättning processer Den har en ömsesidig uteslutningsmekanism.

Skillnad mellan Semaphore och Mutex

Parametrar Semafor Mutex
Mekanism Det är en typ av signalmekanism. Det är en låsmekanism.
Data typ Semafor är en heltalsvariabel. Mutex är bara ett objekt.
Modifiering Vänta- och signaloperationerna kan ändra en semafor. Det modifieras endast av processen som kan begära eller släppa en resurs.
Resurshantering Om ingen resurs är ledig, kräver processen en resurs som ska utföra vänta. Det bör vänta tills räkningen av semaforen är större än 0. Om den är låst måste processen vänta. Processen ska hållas i kö. Detta behöver endast nås när mutex är upplåst.
Tråd Du kan ha flera programtrådar. Du kan ha flera programtrådar i mutex men inte samtidigt.
Äganderätt Värde kan ändras genom valfri process som släpper eller skaffar resursen. Objektlås frigörs endast av processen, som har fått låset på det.
Typer Typer av semafor räknar semafor och binär semafor och Mutex har inga undertyper.
Drift Semaforvärdet modifieras med användning av vänta () och signal (). Mutex-objekt är låst eller olåst.
Resurser Beläggning Det är upptaget om alla resurser används och processen som begär resurs utför wait () -operation och blockerar sig själv tills semaforantalet blir> 1. Om objektet redan är låst väntar processen som begär resurser och köas av systemet innan låset släpps.

Fördelar med semaforer

Här är fördelar / fördelar med att använda Semaphore:

  • Det ger mer än en tråd åtkomst till det kritiska avsnittet
  • Semaforer är maskinoberoende.
  • Semaforer implementeras i mikrokernels maskinoberoende kod.
  • De tillåter inte att flera processer kommer in i det kritiska avsnittet.
  • Eftersom det är upptagen att vänta i semafor finns det aldrig slöseri med procestid och resurser.
  • De är maskinoberoende, som ska köras i den maskinoberoende koden för mikrokärnan.
  • De möjliggör flexibel hantering av resurser.

Nackdelen med semaforer

Här är nackdelar / nackdel med semafor

  • En av de största begränsningarna av en semafor är prioritetsinversion.
  • Operativsystemet måste hålla reda på alla samtal för att vänta och signalera semafor.
  • Deras användning verkställs aldrig, men det är endast enligt konvention.
  • För att undvika blockeringar i semafor måste operationerna Vänta och Signal utföras i rätt ordning.
  • Semaforprogrammering är komplicerat, så det finns chanser att inte uppnå ömsesidig utslagning.
  • Det är inte heller någon praktisk metod för storskalig användning eftersom deras användning leder till förlust av modularitet.
  • Semaphore är mer benägen för programmeringsfel.
  • Det kan orsaka dödläge eller kränkning av ömsesidig uteslutning på grund av programmeringsfel.

Sammanfattning:

  • Semafor definieras som en variabel som inte är negativ och delas mellan trådarna.
  • Det är en mekanism som kan användas för att tillhandahålla synkronisering av uppgifter.
  • Att räkna semafor använder ett antal som hjälper uppgiften att förvärvas eller släppas flera gånger.
  • De binära semaforerna liknar ganska att räkna semaforer, men deras värde är begränsat till 0 och 1.
  • Vänta hjälper dig att styra inmatningen av en uppgift i det kritiska avsnittet
  • Signal semaforoperation används för att styra utgången av en uppgift från ett kritiskt avsnitt
  • Att räkna Semaphore har ingen ömsesidig utestängning medan Binary Semaphore har ömsesidig utestängning
  • Semafor betyder en signalmekanism medan Mutex är en låsmekanism
  • Semaphore ger mer än en tråd åtkomst till det kritiska avsnittet
  • En av de största begränsningarna av en semafor är prioritetsinversion.