Mutex vs Semafor

i henhold til operativsystemterminologi er mutex og semaforer kjerneressurser som gir synkroniseringstjenester, også kalt synkroniseringsprimitiver. Prosesssynkronisering spiller en viktig rolle i å opprettholde konsistensen av delte data. Både programvare og maskinvare løsninger er til stede for å håndtere kritiske delen problemer. Men maskinvareløsninger for kritiske seksjonsproblemer er ganske vanskelig å implementere. Mutex og semaphore begge gir synkroniseringstjenester, men de er ikke det samme.

Hva Er Mutex?

Mutex Er et gjensidig ekskluderingsobjekt som synkroniserer tilgang til en ressurs. Den er opprettet med et unikt navn ved starten av et program. Mutex låsemekanismen sikrer at bare en tråd kan skaffe mutex og gå inn i den kritiske delen. Denne tråden frigjør bare mutexen når den går ut i kritisk seksjon.

Mutex vs Semafor

det er en spesiell type binær semafor som brukes til å kontrollere tilgangen til den delte ressursen. Det inkluderer en prioritet arv mekanisme for å unngå utvidet prioritet inversjon problemer. Den lar dagens høyere prioriterte oppgaver som skal holdes i blokkert tilstand for kortest mulig tid. Prioritert arv korrigerer imidlertid ikke prioritetsinversjon, men minimerer bare effekten.

Eksempel

dette vises ved hjelp av følgende eksempel,

Bruk Av Mutex

en mutex gir gjensidig utelukkelse, enten produsent eller forbruker som kan ha nøkkelen (mutex) og fortsette med sitt arbeid. Så lenge produsenten fyller bufferen, må brukeren vente, og omvendt. I Mutex lock, hele tiden, kan bare en enkelt tråd fungere med hele bufferen.

når et program starter, ber det systemet om å opprette et mutex-objekt for en gitt ressurs. Systemet oppretter mutex-objektet med et unikt navn eller ID. Når programmet tråden ønsker å bruke ressursen, opptar det lås på mutex objekt, utnytter ressursen og etter bruk, frigjør det låsen på mutex objekt. Deretter får neste prosess å skaffe låsen på mutex-objektet.

i Mellomtiden har en prosess fått låsen på mutex-objektet, og ingen annen tråd eller prosess kan få tilgang til ressursen. Hvis mutex-objektet allerede er låst, må prosessen som ønsker å skaffe låsen på mutex-objektet vente og står i kø av systemet til mutex-objektet er låst opp.

Fordeler Med Mutex

Her er følgende fordeler med mutex, for eksempel:

  • Mutex er bare enkle låser oppnådd før du går inn i den kritiske delen og deretter slipper den.
  • Siden bare en tråd er i sin kritiske seksjon til enhver tid, er det ingen raseforhold, og data forblir alltid konsistente.

Ulemper Med Mutex

Mutex har også noen ulemper, for eksempel:

  • hvis en tråd får en lås og går i dvale eller er preempted, kan den andre tråden ikke bevege seg fremover. Dette kan føre til sult.
  • Det kan ikke låses eller låses opp fra en annen kontekst enn den som kjøpte den.
  • Bare en tråd bør tillates i den kritiske delen om gangen.
  • den normale implementeringen kan føre til en opptatt ventetilstand, som spilder CPU-tid.

Hva Er Semafor?

Semafor er ganske enkelt en variabel som ikke er negativ og deles mellom tråder. En semafor er en signalmekanisme, og en annen tråd kan signalere en tråd som venter på en semafor.

Mutex vs Semafor

en semafor bruker to atomiske operasjoner,

1. Vent: venteoperasjonen reduserer verdien av argumentet S hvis det er positivt. Hvis S er negativ eller null, utføres ingen operasjon.

2. Signal for prosesssynkronisering: signaloperasjonen øker verdien av argumentet S.

en semafor enten tillater eller avviser tilgang til ressursen, avhengig av hvordan den er satt opp.

Bruk Av Semafor

i tilfelle av en enkelt buffer kan vi skille 4 KB-bufferen i fire buffere på 1 KB. Semaphore kan knyttes til disse fire bufferne, slik at brukere og produsenter kan jobbe på forskjellige buffere samtidig.

Typer Semafor

Semafor er preget av operativsystemet i to kategorier Som Teller semafor og Binær semafor.

1. Telling Semafor: semaforens verdi initialiseres til antall ressurser som er tilstede i systemet. Når en prosess ønsker å få tilgang til ressursen, utfører den ventetiden () – operasjonen på semaforen og reduserer semaforverdien med en. Når den frigjør ressursen, utfører den signal () – operasjonen på semaforen og øker semaforverdien med en.

når semaforantallet går til 0, betyr det at prosessene opptar alle ressurser. En prosess må bruke en ressurs når semaforantallet er 0. Den utfører ventetiden () – operasjonen og blir blokkert til semaforverdien blir større enn 0.

Mutex vs Semafor

2. Binær semafor: verdien av en semafor varierer mellom 0 og 1. Det ligner på mutex lock, men mutex er en låsemekanisme, mens semaforen er en signalmekanisme. I binær semafor, hvis en prosess ønsker å få tilgang til ressursen, utfører den ventetiden () – operasjonen på semaforen og reduserer verdien av semaforen fra 1 til 0. Når den frigjør ressursen, utfører den en signal () – operasjon på semaforen og øker verdien til 1. Anta at verdien av semaforen er 0 og en prosess vil ha tilgang til ressursen. I så fall utfører den vent () – operasjon og blokkerer seg til den nåværende prosessen som bruker ressursene, frigjør ressursen.

 Mutex vs Semafor

Fordeler Med Semafor

her er følgende fordeler med semafor, for eksempel:

  • det tillater mer enn en tråd å få tilgang til den kritiske delen.
  • Semaforer er maskinuavhengige.
  • Semaforer er implementert i mikrokjernens maskinuavhengige kode.
  • de tillater ikke at flere prosesser går inn i den kritiske delen.
  • da det er opptatt og venter i semafor, er det aldri sløsing med prosesstid og ressurser.
  • de er maskinuavhengige,som skal kjøres i mikrokjernens maskinuavhengige kode.
  • de tillater fleksibel styring av ressurser.

Ulempe Med Semaforer

Semaforer har også noen ulemper, for eksempel:

  • en av de største begrensningene i en semafor er prioritert inversjon.
  • operativsystemet må holde styr på alle samtaler for å vente og signalisere semafor.
  • deres bruk blir aldri håndhevet, men det er bare ved konvensjon.
  • Vent-Og Signaloperasjonene må utføres i riktig rekkefølge for å unngå vranglås i semafor.
  • Semaforprogrammering er en kompleks metode, så det er sjanser for ikke å oppnå gjensidig utelukkelse.
  • Det er heller ikke en praktisk metode for storskala bruk som deres bruk fører til tap av modularitet.
  • Semafor er mer utsatt for programmerer feil
  • , og det kan føre til vranglås eller brudd på gjensidig utelukkelse på grunn av programmerer feil.

Forskjell Mellom Mutex Og Semafor

den grunnleggende forskjellen mellom semafor og mutex er at semafor er en signalmekanisme, dvs. prosesser utfører vent() og signal () operasjon for å indikere om de anskaffer eller frigjør ressursen. I motsetning er en mutex en låsemekanisme, og prosessen må skaffe låsen på et mutex-objekt hvis det ønsker å skaffe ressursen. Her er noen flere forskjeller mellom semafor og mutex, for eksempel:

Mutex vs Semafor

Vilkår Mutex Semafor
Definisjon mutex er en låsemekanisme, for å skaffe en ressurs må en prosess låse mutex-objektet, og mens du frigjør en ressursprosess, må du låse opp mutex-objektet. Semafor er en signalmekanisme som vent() og signal () operasjoner utført på semaforvariabelen indikerer om en prosess er å anskaffe eller frigjøre ressursen.
Eksistens en mutex er et objekt. Semafor er en heltallsvariabel.
Funksjon Mutex tillater flere programtråder for å få tilgang til en enkelt ressurs, men ikke samtidig. Semafor gir flere programtråder tilgang til en endelig forekomst av ressurser.
Eierskap Mutex object lock frigjøres bare av prosessen som har kjøpt låsen på mutex-objektet. Semafor verdi kan endres ved noen prosess anskaffe eller slippe ressursen ved å utføre vente() og signal () operasjon.
Kategorisere Mutex er ikke kategorisert videre. semaforen kan kategoriseres i telling av semafor og binær semafor.
Operasjon mutex-objektet er låst eller låst opp av prosessen med å be om eller frigjøre ressursen. Semaforverdien endres ved hjelp av vent() og signal () operasjon bortsett fra initialisering.
Ressurser Okkupert hvis et mutex-objekt allerede er låst, venter prosessen som ønsker å skaffe ressurs, og kommer i kø av systemet til ressursen er utgitt og mutex-objektet blir låst opp. Anta at prosessen kjøper alle ressursene, og ingen ressurs er ledig. I så fall utfører prosessen som ønsker å skaffe ressurs vent () – operasjon på semaforvariabelen og blokkerer seg til tellingen av semafor blir større enn 0.

Leave a Reply