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.