Forskjellen mellom Semaphore og Monitor i OS

Forfatter: Laura McKinney
Opprettelsesdato: 1 April 2021
Oppdater Dato: 5 Kan 2024
Anonim
monolithic kernel vs microlithic kernel
Video: monolithic kernel vs microlithic kernel

Innhold


Semaphore og Monitor gir begge prosesser tilgang til de delte ressursene i gjensidig utelukkelse. Begge er prosesssynkroniseringsverktøyet. I stedet er de veldig forskjellige fra hverandre. Hvor semafor er en heltalvariabel som bare kan betjenes ved vente () og signal () drift bortsett fra initialiseringen. På den annen side, Følge type er en abstrakt datatype hvis konstruksjon lar en prosess aktiveres samtidig. I denne artikkelen vil vi diskutere forskjellene mellom semafor og monitor ved hjelp av sammenligningskart som vist nedenfor.

  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningsemafor Følge
grunn~~POS=TRUNC Semaforer er en heltalvariabel S.Monitor er en abstrakt datatype.
HandlingVerdien av Semaphore S indikerer antall delte ressurser som er tilgjengelige i systemetMonitor-typen inneholder delte variabler og settet med prosedyrer som fungerer på den delte variabelen.
AdgangNår en hvilken som helst prosess får tilgang til de delte ressursene den utfører, venter () -operasjon på S, og når den frigjør de delte ressursene, utfører den signal () -operasjon på S.Når en hvilken som helst prosess ønsker å få tilgang til de delte variablene i monitoren, må den få tilgang til den gjennom prosedyrene.
TilstandsvariabelSemafor har ikke tilstandsvariabler.Monitor har tilstandsvariabler.


Definisjon av Semaphore

Å være et prosesssynkroniseringsverktøy, semafor er en heltal variabel S. Denne heltalvariabelen S initialiseres til antall ressurser til stede i systemet. Verdien av semafor S kan bare endres med to funksjoner vente() og signal() bortsett fra initialisering.

Ventetiden () og signal () -operasjonen endrer verdien av semaforen S udelelig. Noe som betyr at når en prosess modifiserer verdien av semaforen, kan ingen andre prosesser samtidig endre verdien på semaforen. Videre skiller operativsystemet semaforen i to kategorier Telle semaforer og binær semafor.

I Teller Semaforverdien av semafor S initialiseres til antall ressurser som er til stede i systemet. Hver gang en prosess ønsker tilgang til de delte ressursene, utføres den vente() operasjon på semaforen som svekkelser verdien av semafor for en. Når den frigjør den delte ressursen, utfører den en signal() operasjon på semaforen som trinn verdien av semafor for en. Når semaforantellingen går til 0, det betyr alle ressurser er okkupert av prosessene. Hvis en prosess trenger å bruke en ressurs når semafortellingen er 0, utfører den venting () og få blokkert inntil en prosess som bruker de delte ressursene frigjør den og verdien av semafor blir større enn 0.


I Binær semaforverdien av semafor varierer mellom 0 og 1. Den ligner mutexlås, men mutex er en låsemekanisme, mens semaforen er en signalmekanisme. I binær semafor, hvis en prosess ønsker å få tilgang til ressursen den utfører vente () -operasjon på semaforen og svekkelser verdien av semafor fra 1 til 0. Når prosess frigjør ressursen, utfører den en signal() drift på semaforen og øker verdien til 1. Hvis verdien av semaforen er 0 og en prosess ønsker å få tilgang til ressursen den utfører vente () -operasjon og blokkere seg selv til den nåværende prosessen som bruker ressursene frigjør ressursen.

Definisjon av Monitor

For å overvinne tidsfeilene som oppstår når de bruker semafor for prosesssynkronisering, har forskerne introdusert en synkroniseringskonstruksjon på høyt nivå, dvs. skjermtype. En skjermtype er en abstrakt datatype som brukes til prosesssynkronisering.

Å være en abstrakt datatype monitor type inneholder delte datavariabler som skal deles av alle prosesser og noen programmerer-definert operasjoner som lar prosesser utføre i gjensidig eksklusjon i monitoren. En prosess kan ikke direkte tilgang den delte datavariabelen i monitoren; prosessen må få tilgang til den gjennom prosedyrer definert i monitoren som bare tillater en prosess å få tilgang til de delte variablene i en monitor om gangen.

Syntaksen til skjermen er som følger:

monitor monitor_name {// delt variabel deklarasjonsprosedyre P1 (...) {} prosedyre P2 (...) {} prosedyre Pn (...) {} initialiseringskode (...) {}}

En monitor er en konstruksjon som bare en prosess er aktiv om gangen i monitoren. Hvis andre prosesser prøver å få tilgang til den delte variabelen i skjermen, blokkeres den og blir stilt opp i køen for å få tilgang til delte data når tidligere tilgang til prosessen slipper den.

Betingede variabler ble introdusert for ytterligere synkroniseringsmekanisme. Den betingede variabelen lar en prosess vente inne på skjermen og lar en venteprosess gjenopptas umiddelbart når den andre prosessen frigjør ressursene.

De betinget variabel kan påkalle bare to operasjoner vente() og signal(). Hvor hvis en prosess P påkaller en venting () drift det blir suspendert i skjermen til annen prosess Q påkalle signal () drift, dvs. en signal () -operasjon som påberopes av en prosess, gjenopptar den suspenderte prosessen.

  1. Den grunnleggende forskjellen mellom semafor og monitor er at semafor er en heltalvariabel S som angir antall ressurser som er tilgjengelige i systemet, mens følge er den abstrakt datatype som bare tillater en prosess å utføre i kritiske seksjoner om gangen.
  2. Verdien av semafor kan endres av vente() og signal() kun drift. På den annen side har en monitor de delte variablene og prosedyrene bare gjennom hvilke delte variabler kan nås av prosessene.
  3. I Semaphore når en prosess ønsker tilgang til delte ressurser prosessen utfører vente() betjene og sperre ressursene og når den frigjør ressursene den utfører signal() drift. På skjermer når en prosess trenger tilgang til delte ressurser, må den få tilgang til dem gjennom prosedyrer i monitor.
  4. Monitor type har tilstandsvariabler hvilken semafor ikke har.

Konklusjon:

Skjermer er enkle å implementere enn semafor, og det er liten sjanse for feil i monitor i forhold til semaforer.