Comme d'autres l'ont dit, les sémaphores sont IPC (structures de communication interprocessus). Les sémaphores comme tous les IPC sont utilisés pour permettre à différents processus de communiquer entre eux.
Ce sont essentiellement des compteurs créés, accessibles et détruits à l'aide d'appels système spéciaux, tels que sempost (3), semwait (3), semget (2) et semop (2). Voir sem_overview (7) sur un système Linux pour une brève description.
La définition de communiquer ici est assez primitive. "Communiquer" pour les sémaphores signifie lire, incrémenter ou décrémenter un compteur via les appels système / bibliothèque mentionnés ci-dessus.
La particularité des sémaphores, en dehors du fait qu’ils le sont, est qu’un seul processus à la fois peut effectuer une opération sur eux, et que les opérations de sémaphore sont garanties atomiques , c’est-à-dire que vous ne pouvez pas entrer dans une condition de concurrence sémaphore car le noyau n'échangera pas un processus qui effectue une opération de sémaphore.
L'autre particularité est qu'ils sont créés en mémoire partagée ce qui permet à plusieurs processus d'y accéder.
La façon dont ils se manifestent / créent est que les programmes les créent à l'aide de semget (2). Par exemple, apache crée des sempahores lors de son exécution.
ipcs -l vous indiquera les ressources ipc du système.
Vous pouvez manipuler des sémaphores système et des limites liées à ipc avec sysctls. Essayez sysctl kernel.sem
d'afficher les paramètres liés à sempahore via sysctl. Si vous souhaitez conserver les modifications sysctl, essayez de les insérer /etc/sysctl.conf
.