Hvad er Semaphore? Binære, optællingstyper med eksempel

Indholdsfortegnelse:

Anonim

Hvad er Semaphore?

Semafor er simpelthen en variabel, der er ikke-negativ og deles mellem tråde. En semafor er en signalmekanisme, og en tråd, der venter på en semafor, kan signaliseres af en anden tråd. Den bruger to atomoperationer, 1) ventetid og 2) signal til procssynkroniseringen.

En semafor tillader eller afviser enten adgang til ressourcen, hvilket afhænger af, hvordan den er konfigureret.

I denne operativsystem (OS) vejledning lærer du:

  • Karakteristisk for Semaphore
  • Hvad er Semaphore?
  • Typer af semaforer
  • Eksempel på Semaphore
  • Vent og signaloperationer i semaforer
  • Optælling af semafor vs. binær semafor
  • Forskel mellem Semaphore vs. Mutex
  • Fordele ved semaforer
  • Ulempen ved semaforer

Karakteristisk for Semaphore

Her er karakteristiske for en semafor:

  • Det er en mekanisme, der kan bruges til at give synkronisering af opgaver.
  • Det er en synkroniseringsmekanisme på lavt niveau.
  • Semafor vil altid have en ikke-negativ heltalværdi.
  • Semaphore kan implementeres ved hjælp af testoperationer og afbrydelser, som skal udføres ved hjælp af filbeskrivere.

Typer af semaforer

De to almindelige former for semaforer er

  • Tæller semaforer
  • Binære semaforer.

Tæller semaforer

Denne type Semaphore bruger en optælling, der hjælper opgaven med at blive erhvervet eller frigivet adskillige gange. Hvis den oprindelige optælling = 0, skal tællesemaforen oprettes i den utilgængelige tilstand.

Men hvis optællingen er> 0, oprettes semaforen i den tilgængelige tilstand, og antallet af tokens, den har, svarer til dens antal.

Binære semaforer

De binære semaforer ligner meget på at tælle semaforer, men deres værdi er begrænset til 0 og 1. I denne type semafor fungerer ventetiden kun, hvis semafor = 1, og signaloperationen lykkes, når semafor = 0. Det er let at implementere end at tælle semaforer.

Eksempel på Semaphore

Det nedenfor givne program er en trinvis implementering, som involverer brug og erklæring af semafor.

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

Vent og signaloperationer i semaforer

Begge disse operationer bruges til at implementere processynkronisering. Målet med denne semaforoperation er at få gensidig udstødelse.

Vent til betjening

Denne type semaforoperation hjælper dig med at kontrollere indgangen til en opgave i det kritiske afsnit. Men hvis værdien af ​​ventetiden er positiv, reduceres værdien af ​​venteargumentet X. I tilfælde af negativ eller nul værdi udføres ingen handling. Det kaldes også P (S) -drift.

Efter at semaforværdien er faldet, hvilket bliver negativ, holdes kommandoen nede, indtil de krævede betingelser er opfyldt.

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

Signalfunktion

Denne type Semaphore-operation bruges til at kontrollere afslutningen af ​​en opgave fra et kritisk afsnit. Det hjælper med at øge værdien af ​​argumentet med 1, der betegnes som V (S).

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

Optælling af semafor vs. binær semafor

Her er nogle store forskelle mellem optælling og binær semafor:

Tæller Semaphore Binær semafor
Ingen gensidig udelukkelse Gensidig udelukkelse
Enhver heltalværdi Værdi kun 0 og 1
Mere end en plads Kun en plads
Giv et sæt processer Det har en gensidig udelukkelsesmekanisme.

Forskel mellem Semaphore vs. Mutex

Parametre Semafor Mutex
Mekanisme Det er en type signalmekanisme. Det er en låsemekanisme.
Datatype Semafor er en heltalsvariabel. Mutex er bare et objekt.
Modifikation Vent- og signaloperationerne kan ændre en semafor. Det ændres kun ved den proces, der muligvis anmoder om eller frigiver en ressource.
Ressourcestyring Hvis der ikke er nogen ressource fri, kræver processen en ressource, der skal udføre ventetid. Det skal vente, indtil optællingen af ​​semaforen er større end 0. Hvis den er låst, skal processen vente. Processen skal holdes i kø. Dette skal kun åbnes, når mutex er låst op.
Tråd Du kan have flere programtråde. Du kan have flere programtråde i mutex, men ikke samtidigt.
Ejendomsret Værdien kan ændres ved enhver proces, der frigiver eller skaffer ressourcen. Objektlås frigøres kun ved processen, som har fået låsen på den.
Typer Typer af semafor tæller semafor og binær semafor og Mutex har ingen undertyper.
Operation Semaforværdien ændres ved hjælp af ventetid () og signal (). Mutex-objekt er låst eller ulåst.
Ressourcer Belægning Det er optaget, hvis alle ressourcer bliver brugt, og processen, der anmoder om ressource, udfører vent () -operation og blokerer sig selv, indtil semafortællingen bliver> 1. Hvis objektet allerede er låst, venter processen, der anmoder om ressourcer, og står i kø i systemet, før låsen frigøres.

Fordele ved semaforer

Her er fordele / fordele ved at bruge Semaphore:

  • Det giver mere end en tråd adgang til det kritiske afsnit
  • Semaforer er maskinuafhængige.
  • Semaforer implementeres i mikrokernels maskinuafhængige kode.
  • De tillader ikke flere processer at komme ind i det kritiske afsnit.
  • Da der er travlt med at vente i semaforen, spilder der aldrig spild af procestid og ressourcer.
  • De er maskinuafhængige, som skal køres i mikrokernels maskinuafhængige kode.
  • De tillader fleksibel styring af ressourcer.

Ulempen ved semaforer

Her er ulemper / ulempe ved semafor

  • En af de største begrænsninger ved en semafor er prioritetsinversion.
  • Operativsystemet skal holde styr på alle opkald for at vente og signalere semafor.
  • Deres anvendelse håndhæves aldrig, men det er kun ved konvention.
  • For at undgå blokeringer i semaforen skal operationerne Vent og Signal udføres i den rigtige rækkefølge.
  • Semafor programmering er kompliceret, så der er chancer for ikke at opnå gensidig udelukkelse.
  • Det er heller ikke en praktisk metode til brug i stor skala, da deres anvendelse fører til tab af modularitet.
  • Semaphore er mere tilbøjelig til programmeringsfejl.
  • Det kan forårsage blokering eller krænkelse af gensidig udelukkelse på grund af programmeringsfejl.

Resumé:

  • Semafor er defineret som en variabel, der er ikke-negativ og deles mellem tråde.
  • Det er en mekanisme, der kan bruges til at give synkronisering af opgaver.
  • Tælling af semafor bruger en optælling, der hjælper opgaven med at blive erhvervet eller frigivet adskillige gange.
  • De binære semaforer svarer meget til at tælle semaforer, men deres værdi er begrænset til 0 og 1.
  • Ventedrift hjælper dig med at kontrollere indgangen til en opgave i det kritiske afsnit
  • Signal semaforoperation bruges til at kontrollere udgangen af ​​en opgave fra et kritisk afsnit
  • Optælling af semafor har ingen gensidig udelukkelse, mens binær semafor har gensidig udelukkelse
  • Semafor betyder en signalmekanisme, mens Mutex er en låsemekanisme
  • Semaphore giver mere end en tråd adgang til det kritiske afsnit
  • En af de største begrænsninger ved en semafor er prioritetsinversion.