Hva er Semaphore? Binære, tellingstyper med eksempel

Innholdsfortegnelse:

Anonim

Hva er Semaphore?

Semafor er ganske enkelt en variabel som ikke er negativ og deles mellom tråder. En semafor er en signalmekanisme, og en tråd som venter på en semafor kan signaliseres av en annen tråd. Den bruker to atomoperasjoner, 1) vent og 2) signal for prosesssynkroniseringen.

En semafor tillater eller tillater ikke tilgang til ressursen, som avhenger av hvordan den er satt opp.

I denne operativsystemet (OS) opplæringen vil du lære:

  • Karakteristisk for Semaphore
  • Hva er Semaphore?
  • Typer semaforer
  • Eksempel på Semaphore
  • Vent og signaloperasjoner i semaforer
  • Counting Semaphore vs. Binary Semaphore
  • Forskjellen mellom Semaphore og Mutex
  • Fordeler med semaforer
  • Ulempen med semaforer

Karakteristisk for Semaphore

Her er karakteristiske for en semafor:

  • Det er en mekanisme som kan brukes til å gi synkronisering av oppgaver.
  • Det er en synkroniseringsmekanisme på lavt nivå.
  • Semafor vil alltid ha en ikke-negativ heltallverdi.
  • Semaphore kan implementeres ved hjelp av testoperasjoner og avbrudd, som skal utføres ved hjelp av filbeskrivere.

Typer semaforer

De to vanlige typene semaforer er

  • Teller semaforer
  • Binære semaforer.

Teller semaforer

Denne typen Semaphore bruker en telling som hjelper oppgaven å bli anskaffet eller utgitt flere ganger. Hvis den opprinnelige tellingen = 0, bør tellesemaforen opprettes i utilgjengelig tilstand.

Imidlertid, hvis tellingen er> 0, blir semaforen opprettet i tilgjengelig tilstand, og antall tokens den har tilsvarer antallet.

Binære semaforer

De binære semaforene er ganske like å telle semaforene, men verdien deres er begrenset til 0 og 1. I denne typen semafor fungerer ventedriften bare hvis semafor = 1, og signaloperasjonen lykkes når semafor = 0. Det er enkelt å implementere enn å telle semaforer.

Eksempel på Semaphore

Programmet nedenfor er trinnvis implementering, som innebærer bruk og erklæring av semafor.

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

Vent og signaloperasjoner i semaforer

Begge disse operasjonene brukes til å implementere prosesssynkronisering. Målet med denne semaforoperasjonen er å få gjensidig utestenging.

Vent på drift

Denne typen semaforoperasjon hjelper deg med å kontrollere oppføringen av en oppgave i den kritiske delen. Imidlertid, hvis verdien av ventetiden er positiv, reduseres verdien av venteargumentet X. I tilfelle negativ eller null verdi, utføres ingen operasjoner. Det kalles også P (S) -operasjon.

Etter at semaforverdien er redusert, som blir negativ, holdes kommandoen til de nødvendige forholdene er oppfylt.

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

Signaloperasjon

Denne typen Semaphore-operasjon brukes til å kontrollere avslutningen av en oppgave fra en kritisk seksjon. Det hjelper å øke verdien av argumentet med 1, som er betegnet som V (S).

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

Counting Semaphore vs. Binary Semaphore

Her er noen store forskjeller mellom telling og binær semafor:

Teller Semaphore Binær semafor
Ingen gjensidig utestenging Gjensidig utelukkelse
Enhver heltallverdi Verdi bare 0 og 1
Mer enn ett spor Bare ett spor
Gi et sett med prosesser Den har en gjensidig ekskluderingsmekanisme.

Forskjellen mellom Semaphore og Mutex

Parametere Semafor Mutex
Mekanisme Det er en type signalmekanisme. Det er en låsemekanisme.
Data-type Semafor er en heltallvariabel. Mutex er bare et objekt.
Modifikasjon Ventetiden og signaloperasjonen kan endre en semafor. Den endres bare av prosessen som kan be om eller frigjøre en ressurs.
Ressursforvaltning Hvis ingen ressurser er ledig, krever prosessen en ressurs som skal utføre ventetid. Det skal vente til tellingen av semaforen er større enn 0. Hvis den er låst, må prosessen vente. Prosessen bør holdes i kø. Dette trenger du bare å få tilgang til når mutex er låst opp.
Tråd Du kan ha flere programtråder. Du kan ha flere programtråder i mutex, men ikke samtidig.
Eie Verdien kan endres ved enhver prosess som frigjør eller skaffer ressursen. Objektlås frigjøres bare ved prosessen, som har fått låsen på den.
Typer Typer av semafor er å telle semafor og binær semafor og Mutex har ingen undertyper.
Operasjon Semaforverdien modifiseres ved bruk av vent () og signal () -operasjon. Mutex-objekt er låst eller ulåst.
Ressurser Belegg Det er opptatt hvis alle ressurser brukes og prosessen som ber om ressurs utfører vent () -operasjon og blokkerer seg til semafortelling blir> 1. I tilfelle hvis objektet allerede er låst, venter prosessen som ber om ressurser og står i kø av systemet før låsen frigjøres.

Fordeler med semaforer

Her er fordeler / fordeler ved å bruke Semaphore:

  • Det gir mer enn en tråd tilgang til den kritiske delen
  • Semaforer er maskinuavhengige.
  • Semaforer er implementert i den maskinuavhengige koden til microkernel.
  • De lar ikke flere prosesser komme inn i den kritiske delen.
  • Siden det er travelt å vente i semaforen, er det aldri sløsing med prosesstid og ressurser.
  • De er maskinuavhengige, som skal kjøres i den maskinuavhengige koden til mikrokjernen.
  • De tillater fleksibel forvaltning av ressurser.

Ulempen med semaforer

Her er ulemper / ulempe med semafor

  • En av de største begrensningene ved en semafor er prioritering inversjon.
  • Operativsystemet må holde oversikt over alle samtaler for å vente og signalisere semafor.
  • Bruken av dem blir aldri håndhevet, men det er kun ved konvensjon.
  • For å unngå blokkeringer i semaforen, må operasjonene Vent og Signal utføres i riktig rekkefølge.
  • Semaforeprogrammering er komplisert, så det er sjanser for ikke å oppnå gjensidig utestenging.
  • Det er heller ikke en praktisk metode for bruk i stor skala, da bruken av dem fører til tap av modularitet.
  • Semaphore er mer utsatt for feil i programmerer.
  • Det kan føre til låsing eller brudd på gjensidig utelukkelse på grunn av feil i programmereren.

Sammendrag:

  • Semafor er definert som en variabel som ikke er negativ og deles mellom tråder.
  • Det er en mekanisme som kan brukes til å gi synkronisering av oppgaver.
  • Counting semaphore bruker en telling som hjelper oppgaven å bli anskaffet eller utgitt flere ganger.
  • De binære semaforene er ganske like teller semaforene, men verdien deres er begrenset til 0 og 1.
  • Ventedrift hjelper deg med å kontrollere oppføringen av en oppgave i den kritiske delen
  • Signal semaforoperasjon brukes til å kontrollere utgangen av en oppgave fra en kritisk seksjon
  • Å telle Semaphore har ingen gjensidig utelukkelse, mens Binary Semaphore har gjensidig utelukkelse
  • Semafor betyr en signalmekanisme, mens Mutex er en låsemekanisme
  • Semaphore gir mer enn en tråd tilgang til den kritiske delen
  • En av de største begrensningene ved en semafor er prioritering inversjon.