Semafor vs. Mutex

Innledning

Et Operativsystem (OS) prosess samhandler med andre prosesser som kjører i samme system for å fullføre en felles oppgave. Prosesser som interagerer med andre prosesser kalles samarbeidsprosesser.

BASERT PÅ INTER-Process Communication (IPC) strategier implementert av en prosess, kan den enten dele adresseområdet med andre prosesser eller kommunisere gjennom meldingsutveksling. I den tidligere teknikken er det viktig å kontrollere kommunikasjonen da begge prosessene deler et felles adresserom.

denne kontrollen av prosesskommunikasjon kalles synkronisering. Uten riktig synkronisering kan prosesser lese utdaterte data eller overskrive andre prosessdata.

Semafor og mutex er to mekanismer som vi kan implementere synkronisering og administrere prosessen koordinering. I denne artikkelen ser vi på disse to synkroniseringsverktøyene og sammenligner ulike egenskaper.

Forstå Den Kritiske Delen

før vi diskuterer semafor og mutex, la oss forstå problemet med kritisk seksjon.

La oss anta at vi har et system som inneholder n prosesser. Hver av disse prosessene har et kodesegment der prosessen kan utføre en vanlig variabel oppdatering, en tabelloppdatering eller skrive inn en fil. Denne delen av koden er referert til som den kritiske delen av en prosess.

2.1. Kjennetegn Ved Et Kritisk Seksjonsproblem

det vesentlige ved den kritiske delen er at når en prosess begynner å utføre sin kritiske seksjon, kan ingen annen prosess utføre sin kritiske seksjon. Det vil si at ingen to prosesser kan utføre sin kritiske seksjon samtidig. Dette kritiske seksjonsproblemet er å designe en protokoll slik at prosesser kan bruke samarbeid.

hver prosess må innhente tillatelse til å angi den kritiske delen. Kodestykket som implementerer tillatelsen, kalles oppføringsdelen. På samme måte er koden som implementerer utgangen av den kritiske delen kjent som utgangsseksjonen.

2.2. Kriterier For Et Kritisk Seksjonsproblem

løsningen på et kritisk seksjonsproblem må oppfylle følgende kriterier:

  • Gjensidig Utelukkelse: Hvis en prosess utfører sin kritiske seksjon, kan ingen annen prosess utføre sin kritiske seksjon
  • Fremgang: hvis ingen prosess utfører sin kritiske seksjon, kan andre prosesser bestemme seg for å utføre sin kritiske seksjon. Basert på løsningen og implementeringen velges en prosess som kan utføre sin kritiske seksjon. De bemerkelsesverdige egenskapene er at prosesser har muligheten til å gå videre til en utvelgelsesprosess for å utføre sin kritiske seksjon
  • Begrenset Venter: Det bør være en begrenset ventetid på en prosess Når den har bedt om sin kritiske seksjonsoppføringsdel og antall ganger en annen prosess utfører sin kritiske seksjon

Mutex Låser

Det finnes flere verktøy for å løse det kritiske seksjonsproblemet i ET OS. Mutex (mutex) låser eller mutex er den enkleste løsningen. Vi bruker mutex-låsene for å beskytte den kritiske delen og forhindre raseforholdene. En prosess må skaffe låsen før den får tilgang til den kritiske delen, og den frigjør låsen når den er ferdig med utførelsen av den kritiske delen.

3.1. Hvordan Fungerer En Mutex Lock?

disse to funksjonene for å skaffe og frigjøre låser er representert gjennom to funksjoner-erverve () og release (). Acquire-funksjonen kjøper låsen, og utgivelsen frigjør låsen. En mutex lås har en boolsk variabel som bestemmer om låsen er tilgjengelig eller ikke. Hvis låsen er tilgjengelig, lykkes oppkjøpsmetoden (), og låsen anses som ikke tilgjengelig. Enhver prosess som prøver å få tilgang til en utilgjengelig lås, blokkeres til låsen frigjøres.

følgende pseudokode viser acquire () – metoden:

Gjengitt av QuickLaTeX.com

følgende pseudokode viser release () – metoden:

Gjengitt av QuickLaTeX.com

3.2. Ulemper Med Mutexes

den store ulempen ved en mutex lås er at den lar tråden spinlock hvis låsen ikke er tilgjengelig.

mens en tråd har kjøpt låsen og er i den kritiske delen, er alle andre tråder som forsøker å skaffe låsen, i en løkke hvor tråden regelmessig kontrollerer om låsen er tilgjengelig. Dermed spinner den for låsen og sløser CPU-sykluser som kunne ha blitt brukt av noen andre tråder produktivt.

Dette er et stort problem i en ENKELT CPU-maskin. Spinlock er også kjent som opptatt venter som tråden er «opptatt» venter på låsen.

3.3. Fordeler Med Mutexes

selv om mutex låser lider av spørsmålet om spinlock, har de en fordel. Som prosessen spinlocks I CPU, eliminerer det behovet for prosesskontekstbryteren, som ellers ville ha krevd.

Kontekstbryter av en prosess er en tidkrevende operasjon da det krever lagring av utførende prosesstatistikk i Prosesskontrollblokken (PCB) og omlasting av en annen prosess i CPU. Det er multi-prosessor Cpuer hvor en prosess kan spinne i en prosessorkjerne, og en annen kan utføre sin kritiske seksjon. Dermed er en spinlock av kort varighet i noen scenarier mer nyttig enn en prosesskontekstbryter.

Semafor

en semafor er et annet verktøy som også gir synkroniseringsfunksjoner som ligner på mutex-låser, men er mer robust og sofistikert.

en semafor er en heltallvariabel som, bortsett fra initialisering, er tilgjengelig gjennom to standard atomiske operasjoner-vent () og signal(). Vent () – operasjonen betegnes Som P, og signal () – operasjonen betegnes Som V.

La oss ta en titt på vent () – operasjonen:

Gjengitt av QuickLaTeX.com

Til Slutt, La Oss se på signal () – operasjonen:

Gjengitt av QuickLaTeX.com

!

Alle operasjoner til heltallverdien av semaforen i ventetiden() og signalet() utført atomisk. Det vil si at når en prosess endrer semaforverdien, kan ingen annen prosess samtidig endre samme semaforverdi.

basert på verdien av semaforen s, er den klassifisert i to kategorier – telle semafor og binær semafor. Verdien av en telling semafor kan variere over 0 til en endelig verdi. Mens verdien av en binær semafor kan være mellom 0 og 1.

4.1. Telle Semaforer

Telle semaforer kan styre n antall forekomster av en gitt ressurs. La oss forklare tellesemaforen med en analogi.

la oss anta at det finnes et bibliotek med tre studierom, og det er en bibliotekar som har ti nøkler, hver for et annet rom. Når en leser krever tilgang til et rom, de trenger for å få en nøkkel til å bruke rommet. Når en leser er ferdig med bruken, returnerer de romnøkkelen til bibliotekaren. Når alle rom er i bruk, må en ny leser vente til et rom er fraflyttet av en eksisterende leser.

i eksemplet ovenfor er ressursen et rom, og det er ti forekomster av det. Disse forekomstene styres gjennom a telle semafor som er initialisert med ti. Denne semaforverdien styres gjennom semaforens vent() og signal () metoder. Følgende diagram illustrerer dette:

4.2. Binær Semafor

en binær semafor har to mulige verdier, 0 og 1. Hvis ressursen som forvaltes av semaforen er tilgjengelig, er semaforverdien 1. Ellers er den satt til 0, noe som indikerer at ressursen ikke er tilgjengelig.

en binær semafor har samme funksjonalitet som en mutex-lås. Systemer som ikke støtter mutex låser kan utnytte binære semaforer for å oppnå samme funksjonalitet.

følgende diagram illustrerer den binære semaforen:

Semafor vs. Mutex

følgende tabell oppsummerer de viktige egenskapene til semafor og mutex låser:

Gjengitt av QuickLaTeX.com

Konklusjon

i denne artikkelen diskuterte vi ulike aspekter av mutexer og semaforer.

først diskuterte vi den kritiske delen og behovet for en mutex eller semafor for å kontrollere kritisk seksjonsutførelse. Vi snakket om mutex og semafor.

Til Slutt ga vi en sammenligning av semafor og mutex.

hvis du har noen års erfaring Innen Datavitenskap eller forskning, og du er interessert i å dele den erfaringen med samfunnet, ta en titt på Våre Retningslinjer for Bidrag.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.