Forskjellen mellom semafor og mutex

Forskjellen mellom semafor og mutex
Forskjellen mellom semafor og mutex

Video: Forskjellen mellom semafor og mutex

Video: Forskjellen mellom semafor og mutex
Video: Ягуар против пумы. Jaguar versus cougar 2024, Juli
Anonim

Semaphore vs Mutex

Semaphore er en datastruktur som brukes for å sikre at flere prosesser ikke får tilgang til en felles ressurs eller en kritisk seksjon samtidig, i parallelle programmeringsmiljøer. Semaforer brukes for å unngå dødlåser og løpsforhold. Mutex (Mutual Exclusion Object) brukes også for å unngå tilgang til en felles ressurs på samme tid ved flere samtidige prosesser.

Hva er en semafor?

Semaphore er en datastruktur som brukes til å gi gjensidig ekskludering til kritiske seksjoner. Semaforer støtter hovedsakelig to operasjoner k alt vente (historisk kjent som P) og signal (historisk kjent som V). Venteoperasjonen blokkerer en prosess til semaforen er åpen og signaloperasjonen lar en annen prosess (tråd) komme inn. Hver semafor er knyttet til en kø av venteprosesser. Når venteoperasjonen kalles av en tråd, hvis semaforen er åpen, kan tråden fortsette. Hvis semaforen lukkes når venteoperasjonen kalles av en tråd, blokkeres tråden og den må vente i køen. Signaloperasjonen åpner en semafor, og hvis det allerede er en tråd som venter i køen, får den prosessen fortsette, og hvis det ikke er noen tråder som venter i køen, huskes signalet for de neste trådene. Det er to typer semaforer k alt mutex semaforer og tellende semaforer. Mutex-semaforer tillater én enkelt tilgang til en ressurs, og tellende semaforer lar flere tråder få tilgang til en ressurs (som har flere tilgjengelige enheter).

Hva er en Mutex?

Når en dataapplikasjon startes, vil den opprette en mutex og knytte den til en ressurs. Når ressursen brukes av en tråd, er den låst og andre tråder kan ikke bruke den. Hvis en annen tråd ønsker å bruke den samme ressursen, må den sende en forespørsel. Deretter vil den tråden bli plassert i en kø til den første tråden er ferdig med ressursen. Når den første tråden er ferdig med ressursen vil låsen fjernes og tråden som venter i køen kan få tilgang til ressursen. Hvis det er flere tråder som venter i køen, får de tilgang på roterende basis. Praktisk t alt, når mutexen veksler tilgangen til en ressurs mellom flere tråder, vil den være synlig ettersom flere tråder bruker en ressurs samtidig. Men internt er det bare én enkelt tråd som får tilgang til ressursen på et gitt tidspunkt.

Hva er forskjellen mellom Semaphore og Mutex?

Selv om både semaforene og mutex-objektene brukes for å oppnå gjensidig ekskludering i parallelle programmeringsmiljøer, har de noen forskjeller. Et mutex-objekt tillater bare en enkelt tråd å konsumere en ressurs eller en kritisk seksjon, mens semaforer tillater et begrenset antall samtidige tilganger til en ressurs (under et maksim alt tillatt antall). Med mutex-objekter må andre tråder som ønsker å få tilgang til ressursen vente i en kø til den gjeldende tråden er ferdig med å bruke ressursen.

Anbefalt: