Semaphor

Definition - Was bedeutet Semaphor?

Ein Semaphor ist ein Synchronisationsobjekt, das den Zugriff mehrerer Prozesse auf eine gemeinsame Ressource in einer parallelen Programmierumgebung steuert. Semaphoren werden häufig verwendet, um den Zugriff auf Dateien und gemeinsam genutzten Speicher zu steuern. Die drei grundlegenden Funktionen, die mit Semaphoren verbunden sind, werden festgelegt. Überprüfen Sie und warten Sie, bis sie gelöscht werden, um sie erneut festzulegen. |

Semaphore werden verwendet, um Benchmark-Synchronisationsprobleme anzugehen.

Das Konzept des Semaphors wurde vom niederländischen Informatiker Edsger Dijkstra vorgestellt.

Technische.me erklärt Semaphore

Semaphore sind nicht negative ganzzahlige Werte, die die Operationen Semaphor-> P () und Semaphor-> V () unterstützen. P ist eine atomare Operation, die darauf wartet, dass ein Semaphor positiv ist, und es dann um eins dekrementiert, während V eine atomare Operation ist, die ein Semaphor um eins inkrementiert, was impliziert, dass es ein wartendes P aufweckt. Test und Satz, die dem Semaphor zugeordnet sind, sind Routinen In Hardware implementiert, um kritische Abschnitte auf niedrigerer Ebene zu koordinieren.

Semaphoren werden normalerweise mithilfe von Dateideskriptoren implementiert. Semaphor-Kreationen sind nicht atomar. Wenn zwei Prozesse gleichzeitig versuchen, ein Semaphor zu erstellen, zu initialisieren und zu verwenden, wird eine Racebedingung erstellt. Semaphore werden erstellt und auf einen positiven Wert initialisiert, um die Verfügbarkeit einer zu verwendenden Ressource anzuzeigen. Semaphore können durch Interrupts oder mithilfe von Test-Set-Operationen implementiert werden.

Jedes Semaphor enthält Genehmigungssätze. Es beschränkt die Anzahl der Threads, die auf die Ressourcen zugreifen. Semaphoren mit nur einer Erlaubnis und einer Initialisierung dienen als gegenseitige Ausschlusssperren. Sie werden als solche bezeichnet, da sie nur zwei Zustände haben: Genehmigung verfügbar oder Null-Genehmigung verfügbar. Dies schließt die Eigenschaft ein, sodass eine Sperre von einem anderen Thread als dem Eigentümer freigegeben werden kann, was bei der Wiederherstellung von Deadlocks hilfreich ist. Semaphoren werden zum gegenseitigen Ausschluss verwendet, wenn das Semaphor einen Anfangswert von eins hat und P () und V () vor und nach den kritischen Abschnitten aufgerufen werden.