Forskellen Mellem Semafor Og Skærm

Forskellen Mellem Semafor Og Skærm
Forskellen Mellem Semafor Og Skærm

Video: Forskellen Mellem Semafor Og Skærm

Video: Forskellen Mellem Semafor Og Skærm
Video: ELDER SCROLLS BLADES NOOBS LIVE FROM START 2024, November
Anonim

Semaphore vs skærm

Semaphore er en datastruktur, der bruges til at sikre, at flere processer ikke får adgang til en fælles ressource eller et kritisk afsnit på samme tid i parallelle programmeringsmiljøer. Semaforer bruges til at undgå døde låse og race betingelser. 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 semafor?

Semaphore er en datastruktur, der bruges til at give gensidig udelukkelse af kritiske sektioner. Semaforer understøtter hovedsageligt to operationer kaldet ventetid (historisk kendt som P) og signal (historisk kendt som V). Ventetiden blokerer en proces, indtil semaforen er åben, og signaloperationen tillader en anden proces (tråd) at komme ind. Hver semafor er forbundet med en kø af venteprocesser. Når ventetiden kaldes af en tråd, kan tråden fortsætte, hvis semaforen er åben. Hvis semaforen lukkes, når ventetiden kaldes af en tråd, blokeres tråden, og den skal vente i køen. Signaloperationen åbner en semafor, og hvis der allerede er en tråd, der venter i køen, får processen lov til at fortsætte, og hvis der ikke er nogen tråde, der venter i køen, huskes signalet for de næste tråde. Der er to typer semaforer kaldet mutex semaforer og tæller semaforer. Mutex-semaforer tillader en enkelt adgang til en ressource, og optælling af semaforer giver flere tråde adgang til en ressource (som har flere tilgængelige enheder).

Hvad er en skærm?

En skærm er et programmeringssprog, der bruges til at kontrollere adgangen til delte data. Skærme indkapsler delte datastrukturer, procedurer (der fungerer på delte datastrukturer) og synkronisering mellem samtidige procedureopkald. En skærm sørger for, at dens data ikke står over for ustruktureret adgang og garanterer, at slidbaner (som får adgang til skærmens 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 en skærmprocedure på et givet tidspunkt. Hvis en anden tråd forsøger at påberåbe sig en metode i skærmen, mens en tråd allerede udfører en procedure i skærmen, er 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ægningssemantik.

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 nå denne opgave. På skærme er koden, der bruges til at opnå gensidig udelukkelse, et enkelt sted og er mere struktureret, mens kode til semaforer distribueres som vent- og signalfunktionsopkald. Det er også meget let at begå fejl ved implementering af semaforer, mens der er meget lille chance for at begå fejl ved implementering af skærme. Yderligere bruger skærme betingelsesvariabler, mens semaforer ikke gør det.

Anbefalet: