Wie andere gesagt haben, sind Semaphoren IPC (Interprozess-Kommunikationsstrukturen). Semaphoren wie alle IPC werden verwendet, um die Kommunikation verschiedener Prozesse zu ermöglichen.
Es handelt sich im Grunde genommen um Zähler, die mithilfe spezieller Systemaufrufe wie Sempost (3), Semwait (3), Semget (2) und Semop (2) erstellt, abgerufen und zerstört werden. Eine kurze Beschreibung finden Sie unter sem_overview (7) auf einem Linux-System.
Die Definition von Kommunikation hier ist ziemlich primitiv. "Kommunizieren" für Semaphore bedeutet das Lesen, Inkrementieren oder Dekrementieren eines Zählers über die oben genannten System- / Bibliotheksaufrufe.
Das Besondere an Semaphoren, abgesehen von der Tatsache, dass sie es sind, ist, dass jeweils nur ein Prozess eine Operation an ihnen ausführen kann und die Semaphoroperationen atomar garantiert sind , das heißt, Sie können nicht über a in einen Race-Zustand geraten Semaphor, da der Kernel einen Prozess, der eine Semaphoroperation ausführt, nicht austauscht.
Das andere Besondere ist, dass sie im gemeinsamen Speicher erstellt werden, sodass mehrere Prozesse auf sie zugreifen können.
Wie sie sich manifestieren / erstellen, ist, dass Programme sie mit semget (2) erstellen. ZB Apache erstellt Sempahores, wenn es ausgeführt wird.
ipcs -l informiert Sie über die IPC-Ressourcen des Systems.
Sie können einige System-Semaphor- und IPC-bezogene Grenzwerte mit sysctls bearbeiten. Versuchen Sie sysctl kernel.sem
, die sempahore-bezogenen Einstellungen über sysctl anzuzeigen. Wenn Sie sysctl-Änderungen beibehalten möchten, versuchen Sie, sie zu übernehmen /etc/sysctl.conf
.