Come altri hanno già detto i semafori sono IPC (strutture di comunicazione tra processi). I semafori come tutti gli IPC vengono utilizzati per consentire a processi diversi di comunicare tra loro.
Sono fondamentalmente contatori che vengono creati, accessibili e distrutti utilizzando chiamate di sistema speciali, come sempost (3), semwait (3), semget (2) e semop (2). Vedi sem_overview (7) su un sistema Linux per una breve descrizione.
La definizione di comunicare qui è piuttosto primitiva. "Comunicare" per i semafori significa leggere, incrementare o decrementare un contatore tramite le chiamate di sistema / libreria sopra menzionate.
La particolarità dei semafori, a parte il fatto che sono, è che solo un processo alla volta può eseguire un'operazione su di essi, e le operazioni dei semafori sono garantite atomicamente , vale a dire che non è possibile entrare in una condizione di competizione su un semaforo come il kernel non sostituirà un processo che sta eseguendo un'operazione semaforo.
L'altra cosa speciale è che sono creati nella memoria condivisa che consente a più processi di accedervi.
Il modo in cui si manifestano / creano è che i programmi li creano usando semget (2). Ad esempio apache crea sempahores quando viene eseguito.
ipcs -l ti parlerà delle risorse ipc del sistema.
È possibile manipolare alcuni limiti relativi al semaforo di sistema e all'ipc con sysctls. Prova sysctl kernel.sema visualizzare le impostazioni relative a sempahore tramite sysctl. Se si desidera persistere eventuali modifiche sysctl, provare a inserirle /etc/sysctl.conf.