Verschil tussen semafoor en monitor in OS

Schrijver: Laura McKinney
Datum Van Creatie: 1 April 2021
Updatedatum: 5 Kunnen 2024
Anonim
What is difference between Semaphore and Mutex
Video: What is difference between Semaphore and Mutex

Inhoud


Semafoor en Monitor bieden beide processen toegang tot de gedeelde bronnen met wederzijdse uitsluiting. Beide zijn het processynchronisatieprogramma. In plaats daarvan zijn ze erg verschillend van elkaar. Waar seinpaal is een geheel getalvariabele die alleen kan worden bediend door wacht () en signal (), behalve de initialisatie. Aan de andere kant, de Monitor type is een abstract gegevenstype waarvan het construct het mogelijk maakt één proces in één keer te activeren. In dit artikel zullen we de verschillen tussen semafoor en monitor bespreken met behulp van de onderstaande vergelijkingstabel.

  1. Vergelijkingstabel
  2. Definitie
  3. Belangrijkste verschillen
  4. Gevolgtrekking

Vergelijkingstabel

Basis voor vergelijkingseinpaal Monitor
basis- Semaphores is een geheel getal variabele S.Monitor is een abstract gegevenstype.
ActieDe waarde van Semaphore S geeft het aantal beschikbare gedeelde bronnen in het systeem aanHet type Monitor bevat gedeelde variabelen en de set procedures die op de gedeelde variabele werken.
ToegangWanneer een proces toegang heeft tot de gedeelde bronnen, voert het de bewerking wait () uit op S en wanneer het de gedeelde bronnen vrijgeeft, voert het de bewerking signaal () uit op S.Wanneer een proces toegang wil hebben tot de gedeelde variabelen in de monitor, moet dit via de procedures worden gebruikt.
Voorwaarde variabelSemafoor heeft geen voorwaarde variabelen.Monitor heeft toestandsvariabelen.


Definitie van Semafoor

Als een proces synchronisatie tool, seinpaal is een gehele variabele S. Deze gehele variabele S wordt geïnitialiseerd op de aantal middelen aanwezig in het systeem. De waarde van semafoor S kan alleen worden gewijzigd door twee functies wacht() en signaal() afgezien van initialisatie.

De bewerking wait () en signal () wijzigt de waarde van de semafoor S ondeelbaar. Wat betekent dat wanneer een proces de waarde van de semafoor wijzigt, geen ander proces tegelijkertijd de waarde van de semafoor kan wijzigen. Verder onderscheidt het besturingssysteem de semafoor in twee categorieën Tellende semaforen en Binaire semafoor.

In Semafoor tellen, wordt de waarde van semafoor S geïnitialiseerd op het aantal bronnen dat in het systeem aanwezig is. Wanneer een proces toegang wil krijgen tot de gedeelde bronnen, werkt het wacht() bewerking op de semafoor die decrements de waarde van semafoor met één. Wanneer het de gedeelde bron vrijgeeft, voert het een signaal() bewerking op de semafoor die stappen de waarde van semafoor met één. Wanneer de semafoortelling naar gaat 0, het betekent alle middelen zijn bezet door de processen. Als een proces een resource moet gebruiken wanneer het aantal semaforen 0 is, voert het wacht () uit en krijg het geblokkeerd totdat een proces dat gebruik maakt van de gedeelde bronnen het vrijgeeft en de waarde van semafoor groter wordt dan 0.


In Binaire semafoor, de waarde van semafoor varieert tussen 0 en 1. Het is vergelijkbaar met mutex-vergrendeling, maar mutex is een vergrendelingsmechanisme, terwijl de semafoor een signaleringsmechanisme is. In binaire semafoor, als een proces toegang wil hebben tot de bron, voert het een wacht () bewerking uit op de semafoor en decrements de waarde van semafoor van 1 tot 0. Wanneer het proces de resource vrijgeeft, voert het een signaal() bewerking op de semafoor en verhoogt de waarde naar 1. Als de waarde van de semafoor 0 is en een proces toegang wil hebben tot de resource, voert het de bewerking wait () uit en blokkeert zichzelf totdat het huidige proces dat de resources gebruikt, de resource vrijgeeft.

Definitie van Monitor

Om de timingfouten die optreden tijdens het gebruik van semafoor voor processynchronisatie te overwinnen, hebben de onderzoekers een synchronisatieconstructie op hoog niveau geïntroduceerd, d.w.z. type monitor. Een type monitor is een abstract gegevenstype die wordt gebruikt voor processynchronisatie.

Als een abstract gegevenstype monitortype bevat het gedeelde gegevensvariabelen die door alle processen moeten worden gedeeld en door een programmeur worden gedefinieerd activiteiten waarmee processen in wederzijdse uitsluiting binnen de monitor kunnen worden uitgevoerd. Een proces kan niet rechtstreeks toegang de gedeelde gegevensvariabele in de monitor; het proces moet er toegang toe hebben door procedures gedefinieerd in de monitor die slechts één proces tegelijk toegang geeft tot de gedeelde variabelen in een monitor.

De syntaxis van de monitor is als volgt:

monitor monitornaam {// gedeelde variabele declaratieprocedure P1 (...) {} procedure P2 (...) {} procedure Pn (...) {} initialisatiecode (...) {}}

Een monitor is een constructie zoals er slechts één proces tegelijk actief is binnen de monitor. Als een ander proces toegang probeert te krijgen tot de gedeelde variabele in de monitor, wordt deze geblokkeerd en staat deze in de wachtrij om toegang te krijgen tot gedeelde gegevens wanneer deze eerder wordt vrijgegeven.

Voorwaardelijke variabelen werden geïntroduceerd voor extra synchronisatiemechanisme. De voorwaardelijke variabele laat een proces in de monitor wachten en staat toe dat een wachtproces onmiddellijk wordt hervat wanneer het andere proces de bronnen vrijgeeft.

De voorwaardelijke variabele kan slechts twee bewerkingen aanroepen wacht() en signaal(). Waar als een proces P roept een wachttijd op () werking wordt het opgeschort in de monitor tot een ander proces Q oproepsignaal () bewerking, d.w.z. een door een proces opgeroepen signaal () bewerking hervat het onderbroken proces.

  1. Het fundamentele verschil tussen semafoor en monitor is dat de seinpaal is een gehele variabele S die het aantal beschikbare bronnen in het systeem aangeven, terwijl de monitor is de abstract gegevenstype waardoor slechts één proces tegelijk in kritieke sectie kan worden uitgevoerd.
  2. De waarde van semafoor kan worden gewijzigd door wacht() en signaal() operatie alleen. Aan de andere kant heeft een monitor de gedeelde variabelen en de procedures waarmee de processen toegang hebben tot gedeelde variabelen.
  3. Wanneer in Semaphore een proces toegang wil krijgen tot gedeelde bronnen, voert het proces uit wacht() bewerking en blokkeer de bronnen en wanneer deze worden vrijgegeven signaal() operatie. In monitoren wanneer een proces toegang moet hebben tot gedeelde bronnen, moet het toegang krijgen via procedures in de monitor.
  4. Type monitor heeft staatsvariabelen welke semafoor niet heeft.

Gevolgtrekking:

Monitoren zijn eenvoudiger te implementeren dan semafoor en er is weinig kans op fouten in de monitor in vergelijking met semaforen.