Semaphoren sind Strukturen, die in UNIX-artigen Systemen weitgehend unabhängig von Programmen und Dateisystem existieren. Sie kommen in Gruppen mit mindestens einem Mitglied vor.
Jede einzelne Semaphore einer Gruppe besitzt Speicherplatz für einen nicht-negativen Integer-Wert. Das besondere an diesen Strukturen ist, daß sie zum Blockieren und Freigeben von Prozessen benutzt werden können. Das heißt, ein Prozeß kann einen bestimmten Wert in eine Semaphore schreiben und dann seine Weiterausführung solange unterbrechen, bis ein erwarteter anderer Wert in der Semaphore steht.
So kann man mit Hilfe von Semaphoren für die Synchronisation unterschiedlicher, nicht notwendigerweise miteinander verwandter Prozesse sorgen und gleichzeitig ein effektives Message-Passing realisieren.