Unterschied zwischen Semaphor und Monitor im Betriebssystem

Autor: Laura McKinney
Erstelldatum: 1 April 2021
Aktualisierungsdatum: 5 Kann 2024
Anonim
What is difference between Semaphore and Mutex
Video: What is difference between Semaphore and Mutex

Inhalt


Mit Semaphore und Monitor können Prozesse unter gegenseitigem Ausschluss auf die freigegebenen Ressourcen zugreifen. Beide sind das Prozesssynchronisationstool. Stattdessen sind sie sehr unterschiedlich. Wo Semaphor ist eine Ganzzahlvariable, die abgesehen von der Initialisierung nur durch wait () - und signal () - Operationen bedient werden kann. Auf der anderen Seite die Monitor Typ ist ein abstrakter Datentyp, dessen Konstrukt es einem Prozess ermöglicht, gleichzeitig aktiviert zu werden. In diesem Artikel werden die Unterschiede zwischen Semaphor und Monitor anhand der folgenden Vergleichstabelle erläutert.

  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Fazit

Vergleichstabelle

Grundlage für den VergleichSemaphor Monitor
Basic Semaphoren sind eine ganzzahlige Variable S.Monitor ist ein abstrakter Datentyp.
AktionDer Wert von Semaphore S gibt die Anzahl der im System verfügbaren freigegebenen Ressourcen anDer Monitortyp enthält gemeinsam genutzte Variablen und die Prozeduren, die für die gemeinsam genutzte Variable ausgeführt werden.
ZugriffWenn ein Prozess auf die gemeinsam genutzten Ressourcen zugreift, führt er eine wait () - Operation auf S aus, und wenn er die gemeinsam genutzten Ressourcen freigibt, führt er eine signal () - Operation auf S aus.Wenn ein Prozess auf die freigegebenen Variablen im Monitor zugreifen möchte, muss er über die Prozeduren darauf zugreifen.
BedingungsvariableSemaphor hat keine Bedingungsvariablen.Monitor verfügt über Bedingungsvariablen.


Definition von Semaphor

Als Prozesssynchronisationswerkzeug Semaphor ist ein Ganzzahlvariable S. Diese ganzzahlige Variable S wird mit dem initialisiert Anzahl der Ressourcen im System vorhanden. Der Wert von Semaphor S kann nur durch zwei Funktionen geändert werden warten() und Signal() abgesehen von der Initialisierung.

Die Operationen wait () und signal () ändern den Wert des Semaphors S unteilbar. Das heißt, wenn ein Prozess den Wert des Semaphors ändert, kann kein anderer Prozess gleichzeitig den Wert des Semaphors ändern. Außerdem unterscheidet das Betriebssystem das Semaphor in zwei Kategorien: Zählsemaphore und Binärsemaphor.

Im Semaphor zählenwird der Wert des Semaphors S auf die Anzahl der im System vorhandenen Ressourcen initialisiert. Wann immer ein Prozess auf die freigegebenen Ressourcen zugreifen möchte, wird er ausgeführt warten() Operation auf dem Semaphor, die Abnahmen der Wert des Semaphors um eins. Wenn es die freigegebene Ressource freigibt, führt es eine Signal() Operation auf dem Semaphor, die Schritte der Wert des Semaphors um eins. Wenn die Semaphorenzählung zu geht 0, es bedeutet Alle Ressourcen sind belegt durch die Prozesse. Wenn ein Prozess eine Ressource verwenden muss, deren Semaphorenzahl 0 ist, führt er wait () aus und ruft ab verstopft bis ein Prozess, der die gemeinsam genutzten Ressourcen nutzt, diese freigibt und der Wert des Semaphors größer als 0 wird.


Im BinärsemaphorDer Wert des Semaphors liegt zwischen 0 und 1. Es ähnelt der Mutex-Sperre, aber Mutex ist ein Sperrmechanismus, wohingegen das Semaphor ein Signalisierungsmechanismus ist. Wenn ein Prozess im Binärsemaphor auf die Ressource zugreifen möchte, führt er eine wait () - Operation für das Semaphor und aus Abnahmen der Wert des Semaphors von 1 bis 0. Wenn der Prozess die Ressource freigibt, führt er eine Signal() -Operation für das Semaphor und erhöht seinen Wert auf 1. Wenn der Wert des Semaphors 0 ist und ein Prozess auf die Ressource zugreifen möchte, führt er eine wait () -Operation aus und blockiert sich selbst, bis der aktuelle Prozess, der die Ressourcen verwendet, die Ressource freigibt.

Definition von Monitor

Um die Zeitsteuerungsfehler zu überwinden, die bei der Verwendung von Semaphoren für die Prozesssynchronisation auftreten, haben die Forscher ein Synchronisationskonstrukt auf hoher Ebene eingeführt, d.h. Bildschirmtyp. Ein Monitortyp ist ein abstrakter Datentyp das wird für die Prozesssynchronisation verwendet.

Als abstrakter Datentyp enthält der Monitortyp die geteilte Datenvariablen Diese müssen von allen Prozessen und einigen vom Programmierer definierten Prozessen gemeinsam genutzt werden Operationen Damit können Prozesse innerhalb des Monitors unter gegenseitigem Ausschluss ausgeführt werden. Ein Prozess kann nicht direkt zugreifen die gemeinsam genutzte Datenvariable im Monitor; Der Prozess muss darauf zugreifen durch Verfahren im Monitor definiert, so dass jeweils nur ein Prozess auf die gemeinsam genutzten Variablen in einem Monitor zugreifen kann.

Die Syntax von monitor lautet wie folgt:

monitor monitor_name {// shared variable declarations Prozedur P1 (...) {} Prozedur P2 (...) {} Prozedur Pn (..) {} Initialisierungscode (...) {}}

Ein Monitor ist ein Konstrukt, bei dem jeweils nur ein Prozess im Monitor aktiv ist. Wenn ein anderer Prozess versucht, auf die gemeinsam genutzte Variable im Monitor zuzugreifen, wird sie blockiert und in der Warteschlange aufgereiht, um beim vorherigen Zugriff auf den Prozess Zugriff auf gemeinsam genutzte Daten zu erhalten.

Bedingte Variablen wurden für zusätzliche Synchronisationsmechanismen eingeführt. Die bedingte Variable Ermöglicht das Warten eines Prozesses im Monitor und ermöglicht, dass ein wartender Prozess sofort fortgesetzt wird, wenn der andere Prozess die Ressourcen freigibt.

Das bedingte Variable kann nur zwei Operationen aufrufen warten() und Signal(). Wo, wenn ein Prozess P ruft ein Warten auf () Betrieb wird es im Monitor bis zu einem anderen Prozess ausgesetzt Q-Aufrufsignal () eine signal () - Operation, die von einem Prozess aufgerufen wird, setzt den angehaltenen Prozess fort.

  1. Der grundlegende Unterschied zwischen Semaphor und Monitor besteht darin, dass Semaphor ist ein ganzzahlige Variable S die die Anzahl der im System verfügbaren Ressourcen angeben, während die Monitor ist der abstrakter Datentyp Dadurch kann jeweils nur ein Prozess in einem kritischen Abschnitt ausgeführt werden.
  2. Der Wert des Semaphors kann mit geändert werden warten() und Signal() nur Bedienung. Andererseits verfügt ein Monitor nur über die gemeinsam genutzten Variablen und die Prozeduren, über die die Prozesse auf gemeinsam genutzte Variablen zugreifen können.
  3. In Semaphore wird der Prozess ausgeführt, wenn ein Prozess auf freigegebene Ressourcen zugreifen möchte warten() Operation und blockieren Sie die Ressourcen und wenn es die Ressourcen freigibt, die es ausführt Signal() Betrieb. In Monitoren muss ein Prozess, wenn er auf freigegebene Ressourcen zugreifen muss, über Prozeduren in Monitor darauf zugreifen.
  4. Monitortyp hat Bedingungsvariablen welches semaphor nicht hat.

Fazit:

Monitore sind einfacher zu implementieren als Semaphore, und es besteht im Vergleich zu Semaphoren nur eine geringe Wahrscheinlichkeit, dass der Monitor fehlerhaft ist.