Anbefalt, 2024

Redaksjonens

Forskjellen mellom Semaphore og Mutex

Prosessynkronisering spiller en viktig rolle for å opprettholde konsistensen av felles data. Både programvare og maskinvareløsninger er til stede for å håndtere kritisk seksjonsproblem. Men maskinvareløsninger for kritisk seksjonsproblem er ganske vanskelig å implementere. I dagens artikkel vil vi diskutere to programvarebaserte løsninger for å håndtere kritisk seksjonsproblem, dvs. Semaphore og Mutex.

Den grunnleggende forskjellen mellom semafor og mutex er at semaforen er en signalmekanisme, dvs. prosesser utfører ventetid () og signal () -operasjon for å indikere om de erverver eller frigjør ressursen, mens Mutex er låsemekanisme, må prosessen innhente låsen på mutex objekt hvis den ønsker å skaffe ressursen. Det er noen flere forskjeller mellom semafor og mutex, la oss diskutere dem ved hjelp av sammenligningstabell vist nedenfor.

Sammenligningstabel

Grunnlag for sammenligningsemaformutex
grunn~~POS=TRUNCSemaphore er en signalmekanisme.Mutex er en låsemekanisme.
EksistensSemaphore er en heltallvariabel.Mutex er et objekt.
FunksjonSemaphore tillater flere programtråder å få tilgang til en begrenset forekomst av ressurser.Mutex tillater flere programtråder å få tilgang til en enkelt ressurs, men ikke samtidig.
EieSemaphore verdi kan endres ved enhver prosess å anskaffe eller frigjøre ressursen.Mutex objektlås frigjøres kun av prosessen som har fått låsen på den.
kategorisereSemaphore kan kategoriseres i telling semafor og binær semaphore.Mutex er ikke kategorisert videre.
OperasjonSemaphore verdi er endret ved hjelp av vent () og signal () operasjon.Mutex-objektet er låst eller låst opp av prosessen som ber om eller frigir ressursen.
Ressurser okkupertHvis alle ressursene blir brukt, utfører prosessen som ber om ressurs utført ventetid () -operasjon og blokkerer seg til semaforetellingen blir større enn en.Hvis en mutex-objekt allerede er låst, venter prosessen som ber om ressurser, og venter i køen av systemet til lås frigjøres.

Definisjon av Semaphore

Semaphore er et prosesssynkroniseringsverktøy. Semaphore er vanligvis en heltallvariabel S som initialiseres til antall ressurser som er tilstede i systemet, og verdien av semaforen kan kun modifiseres av to funksjoner vente () og signal () bortsett fra initialisering.

Ventetiden () og signal () -operasjonen endrer verdien av semaforen utelukkelig . Det betyr at når en prosess er å endre verdien av semaforen, kan ingen annen prosess samtidig endre verdien av semaforen. Semaphore er preget av operativsystemet i to kategorier Telling semaforer og binær semaphore .

I Counting Semaphore initialiseres semaforens S-verdi til antall ressurser som er tilstede i systemet. Når en prosess ønsker å få tilgang til ressursen, utfører den ventetid () på semaforen og reduserer verdien av semaforen med en. Når den frigir ressursen, utfører den signal () -operasjon på semaforen og øker verdien av semaforen med en. Når semaforetellingen går til 0, betyr det at alle ressurser er opptatt av prosessene. Hvis en prosess trenger å bruke en ressurs når semaphore teller er 0, utfører den vent () og blir blokkert til verdien av semafor blir større enn 0.

I binær semafor ligger verdien av semaphore mellom 0 og 1 . Det ligner på mutex-lås, men mutex er en låsemekanisme, mens semaforen er en signalmekanisme. I binær semaphore, hvis en prosess ønsker å få tilgang til ressursen, utfører den vent () -operasjonen på semaforen og reduserer verdien av semafor fra 1 til 0. Når den frigir ressursen, utfører den et signal () -operasjon på semaforen og trinnene dens verdi til 1. Hvis verdien av semaphore er 0 og en prosess ønsker å få tilgang til ressursen, utfører den vent () -operasjonen og blokkerer seg selv til den nåværende prosessen som bruker ressursene, frigjør ressursen.

Definisjon av Mutex

Gensidig utelukkelse Objekt er kort sagt betegnet som Mutex. Fra begrepet gjensidig utestenging kan vi forstå at bare én prosess om gangen kan få tilgang til den oppgitte ressursen. Mutex-objektet tillater at flere programtråder bruker samme ressurs, men en om gangen ikke samtidig.

Når et program starter, ber systemet om å opprette et mutex-objekt for en gitt ressurs. Systemet lager mutex objektet med et unikt navn eller ID. Når programtråden ønsker å bruke ressursen, opptar den lås på mutex objekt, bruker ressursen og etter bruk frigjør den låsingen på mutex objekt. Deretter kan neste prosess skaffe låsen på mutex objekt.

I mellomtiden har en prosess oppnådd låsen på mutex objekt, ingen andre tråder / prosesser kan få tilgang til denne ressursen. Hvis mutex-objektet allerede er låst, må prosessen som ønsker å skaffe låsen på mutex-objektet, vente og kjøre opp av systemet til mutex-objektet er låst opp.

Viktige forskjeller mellom Semaphore og Mutex

  1. Semaphore er en signalmekanisme som vente () og signal () -operasjon utført på semaphore-variabel indikerer om en prosess anskaffer ressursen eller frigjør ressursen. På den andre hender er mutexen en låsemekanisme, for å skaffe en ressurs, må en prosess låse mutex objektet, og mens utgivelsen av en ressursprosess må låse opp mutex objekt.
  2. Semaphore er vanligvis en heltallvariabel mens mutex er en gjenstand .
  3. Semaphore tillater flere programtråder å få tilgang til den endelige forekomsten av ressurser . På den andre siden tillater Mutex flere programtråder å få tilgang til en felles ressurs, men en om gangen.
  4. Semaphore-variabel verdi kan modifiseres ved enhver prosess som kjøper eller frigjør ressurs ved å utføre vent () og signal () -operasjon. På de andre hender kan lås som er oppnådd på mutex-objektet, kun slippes ut av prosessen som har oppnådd låsen på mutex-objektet.
  5. Semaphore er av to typer som teller semafor og binær semafor som er ganske lik mutexen.
  6. Semaphore-variabel verdi endres ved å vente () og signal () -operasjon bortsett fra initialisering. Imidlertid er det stumme objektet låst eller låst opp ved prosessen som anskaffer eller frigjør ressursen.
  7. Hvis alle ressursene er anskaffet av prosessen, og ingen ressurs er ledig, vil prosessen som ønsker å skaffe ressurs utføre ventetid () -operasjon på semaphore-variabel og blokkere seg til tellingen av semaforen blir større enn 0. Men hvis en mutex-gjenstand allerede er låst så prosessen som ønsker å skaffe ressurs venter og får av systemet til ressursen er utgitt og mutex objekt blir låst opp.

Konklusjon:

Semaphore er et bedre alternativ hvis det finnes flere forekomster av ressurser. I tilfelle av felles felles ressurs er mutex et bedre valg.

Top