Forskjellen mellom semaphore og skjerm

Semaphore vs Monitor

Semaphore er en datastruktur som brukes til å sikre at flere prosesser ikke får tilgang til en felles ressurs eller en kritisk seksjon samtidig, i parallelle programmeringsmiljøer. Semaforer brukes til å unngå døde låser og løpevilkår. Monitor er en programmeringsspråkskonstruksjon som også brukes til å unngå at flere prosesser får tilgang til en felles ressurs samtidig, og dermed garanterer gjensidig utestenging. Skjermer bruker betingede variabler for å oppnå denne oppgaven.

Hva er en Semaphore?

Semaphore er en datastruktur som brukes til å gi gjensidig utestenging til kritiske seksjoner. Semaforer støtter hovedsakelig to operasjoner kalt ventetid (historisk kjent som P) og signal (historisk kjent som V). Vent-operasjonen blokkerer en prosess til semaforen er åpen og signaloperasjonen tillater en annen prosess (tråd) å gå inn. Hver semafor er knyttet til en kø av venteprosesser. Når ventetjenesten kalles av en tråd, hvis semaforen er åpen, kan tråden fortsette. Hvis semaforen er stengt når ventetiden er kalt av en tråd, er tråden blokkert, og den må vente i køen. Signaloperasjonen åpner en semafor, og hvis det er en tråd som allerede venter i køen, kan denne prosessen fortsette, og hvis det ikke er noen tråder som venter i køen, blir signalet husket for de neste trådene. Det er to typer semaforer kalt mutex semaforer og teller semaforer. Mutex-semaforer tillater en enkelt tilgang til en ressurs og telle semaforer tillater flere tråder å få tilgang til en ressurs (som har flere enheter tilgjengelig).

Hva er en skjerm?

En skjerm er en programmeringsspråkskonstruksjon som brukes til å kontrollere tilgang til delt data. Skjermer inkapsler delte datastrukturer, prosedyrer (som opererer på delte datastrukturer) og synkronisering mellom samtidige prosedyreanbefalinger. En skjerm sørger for at dataene ikke står overfor ustrukturert tilgang og garanterer at tråder (hvilken tilgangsovervåker data gjennom sine prosedyrer) samhandler på en legitim måte. En skjerm garanterer gjensidig utelukkelse ved å tillate bare én tråd å utføre en hvilken som helst skjermprosedyre på et gitt tidspunkt. Hvis en annen tråd forsøker å påkalle en metode i skjermen, mens en tråd allerede utfører en prosedyre i skjermen, blir den andre prosedyren blokkert og den må vente i køen. Det er to typer skjermer som heter Hoare-skjermer og Mesa-skjermer. De skilner seg hovedsakelig i deres planlegging semantikk.

Hva er forskjellen mellom Semaphore og Monitor?

Selv om både semaforene og skjermene brukes til å oppnå gjensidig utestenging i parallelle programmeringsmiljøer, varierer de i teknikkene som brukes til å oppnå denne oppgaven. I monitorer er koden som brukes for å oppnå gjensidig utestenging, på et enkelt sted og mer strukturert, mens kode for semaforer blir distribuert som vent og signalfunksjonssamtaler. Det er også veldig enkelt å lage feil når man implementerer semaforer, mens det er en liten sjanse til å gjøre feil når man implementerer skjermer. Videre overvåker bruk betingelsesvariabler, mens semaforer ikke gjør det.