Forskellen mellem semafor og monitor

Forskellen mellem semafor og monitor
Forskellen mellem semafor og monitor

Video: Forskellen mellem semafor og monitor

Video: Forskellen mellem semafor og monitor
Video: Настройка загрузчика GRUB2 в Ubuntu Linux (Configuring loader GRUB2 in Linux Ubuntu) 2024, Juli
Anonim

Semaphore vs Monitor

Semaphore er en datastruktur, der bruges til at sikre, at flere processer ikke får adgang til en fælles ressource eller en kritisk sektion på samme tid i parallelle programmeringsmiljøer. Semaforer bruges til at undgå dead locks og race forhold. Monitor er en programmeringssprogkonstruktion, der også bruges til at undgå, at flere processer får adgang til en fælles ressource på samme tid, og garanterer derfor gensidig udelukkelse. Monitorer bruger betingede variabler til at udføre 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 vente (historisk kendt som P) og signal (historisk kendt som V). Venteoperationen 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 ventende processer. Når venteoperationen kaldes af en tråd, hvis semaforen er åben, kan tråden fortsætte. Hvis semaforen lukkes, når venteoperationen kaldes af en tråd, er tråden blokeret, og den må vente i køen. Signaloperationen åbner en semafor, og hvis der allerede er en tråd, der venter i køen, får den proces 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ælle semaforer. Mutex semaforer tillader en enkelt adgang til en ressource, og tælle semaforer tillader flere tråde at få adgang til en ressource (som har flere tilgængelige enheder).

Hvad er en skærm?

En skærm er en programmeringssprogkonstruktion, der bruges til at kontrollere adgangen til delte data. Monitorer indkapsler delte datastrukturer, procedurer (der fungerer på delte datastrukturer) og synkronisering mellem samtidige procedurekald. En monitor sørger for, at dens data ikke står over for ustrukturerede adgange og garanterer, at tråde (hvilket tilgår monitorens data gennem sine procedurer) interagerer på en legitim måde. En monitor garanterer gensidig udelukkelse ved kun at tillade én tråd at udføre enhver monitorprocedure på et givet tidspunkt. Hvis en anden tråd forsøger at påkalde en metode i monitoren, mens en tråd allerede udfører en procedure i monitoren, så blokeres den anden procedure, og den må vente i køen. Der er to typer skærme, der hedder Hoare-skærme og Mesa-skærme. De adskiller sig hovedsageligt i deres planlægningssemantik.

Hvad er forskellen mellem Semaphore og Monitor?

Selv om både semaforerne og monitorerne bruges til at opnå gensidig udelukkelse i parallelle programmeringsmiljøer, er de forskellige i de teknikker, der bruges til at udføre denne opgave. I monitorer er koden, der bruges til at opnå gensidig udelukkelse, et enkelt sted og er mere struktureret, mens kode til semaforer distribueres som vente- og signalfunktionsopkald. Det er også meget nemt at lave fejl, når man implementerer semaforer, mens der er en meget lille chance for at lave fejl, når man implementerer monitorer. Ydermere bruger monitorer tilstandsvariabler, mens semaforer ikke gør det.

Anbefalede: