Forskel mellem semaphore og monitor

Anonim

Semaphore vs Monitor

Semaphore er en datastruktur, der bruges til at sikre, at flere processer ikke har adgang til en fælles ressource eller en kritisk sektion på samme tid i parallelle programmeringsmiljøer. Semaforer bruges til at undgå døde låse og løbevilkår. Monitor er en programmeringssprogkonstruktion, der også bruges til at undgå flere processer, der får adgang til en fælles ressource på samme tid, og garanterer derfor gensidig udelukkelse. Skærme bruger betingede variabler til at opnå denne opgave.

Hvad er en semaphore?

Semaphore er en datastruktur, der bruges til at give gensidig udelukkelse til kritiske afsnit. Semaforer støtter hovedsagelig to operationer kaldet ventetid (historisk kendt som P) og signal (historisk kendt som V). Vent-operationen blokerer en proces, indtil semaforen er åben, og signalbetjeningen tillader en anden proces (tråd) at indtaste. Hver semafor er forbundet med en kø af venteprocesser. Når ventevirkningen kaldes af en tråd, hvis semaforen er åben, kan tråden fortsætte. Hvis semaforen er lukket, når ventetiden kaldes af en tråd, er tråden blokeret, og den skal vente i køen. Signaloperationen åbner en semafor, og hvis der er en tråd, der allerede venter i køen, kan denne proces fortsætte, og hvis der ikke er tråde, der venter i køen, bliver signalet husket for de næste tråde. Der er to typer af semaforer kaldet mutex semaforer og tæller semaforer. Mutex semaforer tillader en enkelt adgang til en ressource og tæller semaforer tillader flere tråde at få adgang til en ressource (som har flere enheder til rådighed).

Hvad er en skærm?

En skærm er en programmeringssprogkonstruktion, der bruges til at styre adgang til fælles data. Skærme indkapsler delte datastrukturer, procedurer (der fungerer på delte datastrukturer) og synkronisering mellem samtidige procedurindkaldelser. En skærm sørger for, at dens data ikke står over for ustruktureret adgang og sikrer, at tråde (hvilken adgangskonsols data gennem dens procedurer) interagerer på en legitim måde. En skærm garanterer gensidig udelukkelse ved kun at tillade en tråd at udføre nogen overvågningsprocedure på et givet tidspunkt. Hvis en anden tråd forsøger at påberåbe sig en metode på skærmen, mens en tråd allerede udfører en procedure på skærmen, bliver den anden procedure blokeret, og den skal vente i køen. Der er to typer skærme med navnet Hoare-skærme og Mesa-skærme. De adskiller sig hovedsageligt i deres planlægning semantik.

Hvad er forskellen mellem semaphore og monitor?

Selvom både semaforer og skærme bruges til at opnå gensidig udelukkelse i parallelle programmeringsmiljøer, adskiller de sig i de teknikker, der bruges til at opnå denne opgave.I skærme er koden, der bruges til at opnå gensidig udelukkelse, ét sted og mere struktureret, mens kode for semaforer er fordelt som vent- og signalfunktionsopkald. Det er også meget nemt at lave fejl ved implementering af semaforer, mens der er en meget lille chance for at lave fejl ved monitors gennemførelse. Yderligere overvåger brugsvilkår variabler, mens semaforer ikke gør det.