Skillnaden mellan Semaphore och Monitor i OS

Författare: Laura McKinney
Skapelsedatum: 1 April 2021
Uppdatera Datum: 5 Maj 2024
Anonim
Interrupting Blink sketch (Subtittled)
Video: Interrupting Blink sketch (Subtittled)

Innehåll


Semaphore och Monitor båda tillåter processer att få tillgång till de delade resurserna i ömsesidig uteslutning. Båda är processsynkroniseringsverktyget. Istället skiljer de sig mycket från varandra. Var Semafor är en heltalvariabel som kan manövreras endast genom att vänta () och signal () operation bortsett från initialiseringen. Å andra sidan Övervaka typ är en abstrakt datatyp vars konstruktion tillåter en process att aktiveras samtidigt. I den här artikeln kommer vi att diskutera skillnaderna mellan semafor och monitor med hjälp av jämförelsediagram som visas nedan.

  1. Jämförelsediagram
  2. Definition
  3. Viktiga skillnader
  4. Slutsats

Jämförelsediagram

Grund för jämförelseSemafor Övervaka
Grundläggande Semaforer är en heltalvariabel S.Monitor är en abstrakt datatyp.
VerkanVärdet på Semaphore S anger antalet delade resurser som finns tillgängliga i systemetMonitortypen innehåller delade variabler och uppsättningen procedurer som fungerar på den delade variabeln.
TillgångNär någon process får åtkomst till de delade resurserna utför den vänta () -operation på S och när den släpper de delade resurserna utför den signal () -operation på S.När någon process vill komma åt de delade variablerna på monitorn måste den komma åt den genom procedurerna.
SkickvariabelSemafor har inte tillståndsvariabler.Monitor har tillståndsvariabler.


Definition av Semaphore

Att vara ett processynkroniseringsverktyg, Semafor är en heltalvariabel S. Denna heltalvariabel S är initialiserad till antal resurser närvarande i systemet. Värdet på semafor S kan endast ändras med två funktioner vänta() och signal() bortsett från initialisering.

Funktionen Wait () och Signal () ändrar värdet på semaforen S odelbart. Vilket innebär att när en process modifierar semaforens värde kan ingen annan process samtidigt ändra semaforens värde. Operativsystemet skiljer dessutom semaforen i två kategorier Räkna semaforer och binär semafor.

I Räknar Semaforevärdet på semafor S initialiseras till antalet resurser som finns i systemet. När en process vill komma åt de delade resurserna utförs den vänta() operation på semaforen som minskningar värdet av semafor med en. När den släpper den delade resursen utför den en signal() operation på semaforen som inkrement värdet av semafor med en. När semaforantalet går till 0, det betyder alla resurser är upptagna av processerna. Om en process behöver använda en resurs när semaforantalet är 0, kör den vänta () och få blockerad tills en process som använder de delade resurserna släpper den och värdet på semafor blir större än 0.


I Binär semafor, värdet på semafor varierar mellan 0 och 1. Det liknar mutexlås, men mutex är en låsmekanism medan semaforen är en signalmekanism. I en binär semafor, om en process vill komma åt resursen utför den vänta () -operation på semaforen och minskningar värdet på semafor från 1 till 0. När processen släpper resursen utför den en signal() operation på semaforen och ökar dess värde till 1. Om värdet på semaforen är 0 och en process vill få åtkomst till resursen utför den väntan () -operationen och blockerar sig tills den nuvarande processen med resurserna släpper resursen.

Definition av Monitor

För att övervinna tidtagningsfelen som uppstår vid användning av semafor för processsynkronisering har forskarna infört en synkroniseringskonstruktion på hög nivå, dvs. bildskärmstyp. En bildskärmstyp är en abstrakt datatyp som används för processsynkronisering.

Att vara en abstrakt datatyp monitortyp innehåller delade datavariabler som ska delas av alla processer och vissa programmeringsdefinerade operationer som gör att processer kan utföras i ömsesidig uteslutning inom monitorn. En process kan inte direkt åtkomst den delade datavariabeln i monitorn; processen måste komma åt den genom förfaranden definierad i monitorn som tillåter endast en process att få åtkomst till de delade variablerna i en monitor åt gången.

Syntaxen för bildskärmen är som följer:

monitor monitor_name {// delad variabel deklarationsprocedur P1 (...) {} procedur P2 (...) {} procedur Pn (...) {} initialiseringskod (...) {}}

En bildskärm är en konstruktion så att endast en process är aktiv åt gången inom monitorn. Om en annan process försöker få åtkomst till den delade variabeln i bildskärmen blockeras den och placeras i kön för att få åtkomst till delad data när tidigare åtkomstprocessen släpper den.

Villkorliga variabler introducerades för ytterligare synkroniseringsmekanism. Den villkorliga variabeln tillåter en process att vänta inuti monitorn och tillåter att en vänteprocess återupptas omedelbart när den andra processen släpper resurserna.

De villkorlig variabel kan åberopa endast två operationer vänta() och signal(). Var om en process P åberopar en vänta () drift det blir avstängd i monitorn till annan process Q påkalla signal () operation dvs. en signal () -operation som åberopas av en process återupptar den avstängda processen.

  1. Den grundläggande skillnaden mellan semafor och monitor är att semafor är en heltalvariabel S som anger antalet tillgängliga resurser i systemet medan övervaka är abstrakt datatyp vilket gör att endast en process kan köras i ett kritiskt avsnitt åt gången.
  2. Värdet på semafor kan ändras med vänta() och signal() endast drift. Å andra sidan har en monitor de delade variablerna och procedurerna endast genom vilka delade variabler kan nås av processerna.
  3. I Semaphore när en process vill komma åt delade resurser utför processen vänta() hantera och blockera resurserna och när den släpper de resurser som den utför signal() drift. På monitorer när en process behöver åtkomst till delade resurser måste den komma åt dem genom procedurer i monitor.
  4. Skärmtyp har tillståndsvariabler vilken semafor inte har.

Slutsats:

Bildskärmar är enkla att implementera än semafor, och det finns liten risk för misstag i monitor jämfört med semaforer.