Como otros han dicho, los semáforos son IPC (estructuras de comunicaciones entre procesos). Los semáforos como todos los IPC se utilizan para permitir que diferentes procesos se comuniquen entre sí.
Básicamente son contadores que se crean, acceden y destruyen utilizando llamadas especiales del sistema, como sempost (3), semwait (3), semget (2) y semop (2). Ver sem_overview (7) en un sistema Linux para una breve descripción.
La definición de comunicar aquí es bastante primitiva. "Comunicar" para semáforos significa leer, aumentar o disminuir un contador a través de las llamadas al sistema / biblioteca mencionadas anteriormente.
Lo especial de los semáforos, aparte del hecho de que son, es que solo un proceso a la vez puede realizar una operación en ellos, y las operaciones de semáforos están garantizadas atómicas , es decir, no se puede entrar en una condición de carrera durante un semáforo ya que el núcleo no intercambiará un proceso que está realizando una operación de semáforo.
La otra cosa especial es que se crean en la memoria compartida, lo que permite que múltiples procesos accedan a ellos.
La forma en que se manifiestan / crean es que los programas los crean usando semget (2). Por ejemplo, apache crea sempahores cuando se ejecuta.
ipcs -l le informará sobre los recursos ipc del sistema.
Puede manipular algunos límites relacionados con el semáforo del sistema y el IPC con sysctls. Trate sysctl kernel.sem
de ver la configuración relacionada con Sempahore mediante sysctl. Si desea persistir cualquier cambio de sysctl, intente ponerlos /etc/sysctl.conf
.