sem_overview
Panorama des sémaphores POSIX
- Provided by: manpages-fr (Version: 3.65d1p1-1)
- Report a bug
Panorama des sémaphores POSIX
Les sémaphores POSIX permettent aux processus et aux threads de se synchroniser.
Un sémaphore est un entier dont la valeur ne peut jamais être négative. Deux opérations peuvent être effectuées : incrémenter la valeur du sémaphore de 1 (sem_post(3)), ou décrémenter la valeur du sémaphore de 1 (sem_wait(3)). Si la valeur courante est 0, une opération sem_wait(3) bloque jusqu'à ce que la valeur devienne strictement positive.
Les sémaphores POSIX sont de deux types : les sémaphores nommés et les sémaphores anonymes.
La fonction sem_open(3) crée un nouveau sémaphore nommé ou en ouvre un existant. Après l'ouverture de ce sémaphore, il peut être utilisé avec sem_post(3) et sem_wait(3). Lorsqu'un processus a fini d'utiliser le sémaphore, il peut utiliser sem_close(3) pour le fermer. Lorsque tous les processus ont terminé de l'utiliser, il peut être supprimé du système avec sem_unlink(3).
Avant son utilisation, un sémaphore anonyme doit être initialisé avec sem_init(3). Il peut ensuite être utilisé avec sem_post(3) et sem_wait(3). Lorsque le sémaphore n'est plus nécessaire, et avant que la mémoire où il est placé ne soit libérée, le sémaphore doit être détruit avec sem_destroy(3).
Le reste de cette section décrit certains détails spécifiques à l'implémentation Linux des sémaphores POSIX.
Avant le noyau 2.6, Linux ne proposait que les sémaphores anonymes partagés par des threads. Sur un système Linux 2.6 avec une glibc fournissant l'implémentation des threads NPTL, une implémentation complète des sémaphores POSIX est fournie.
Les sémaphores POSIX nommés sont persistants dans le noyau : s'il n'est pas supprimé avec sem_unlink(3) un sémaphore existe tant que le système n'est pas éteint.
Les programmes utilisant l'API des sémaphores POSIX doit être compilé avec cc -pthread pour être lié avec la bibliothèque temps‐réel, librt.
Sous Linux, les sémaphores nommés sont créés sur un système de fichiers virtuel, en général monté sur /dev/shm, avec des noms de la forme sem.un_nom (ce qui explique que les noms des sémaphores soient limités à NAME_MAX-4 plutôt qu'à NAME_MAX caractères).
Depuis Linux 2.6.19, il est possible de placer des listes de contrôle d'accès sur les fichiers de ce répertoire au niveau groupe et utilisateur.
POSIX.1-2001.
Les sémaphores System V (semget(2), semop(2), etc.) sont une API de sémaphores plus vieille. Les sémaphores POSIX fournissent une interface plus simple et mieux conçue que les sémaphores System V. En revanche, les sémaphores POSIX sont moins largement disponibles que les sémaphores System V (surtout sur les systèmes plus anciens).
Un exemple d'utilisation des diverses fonctions des sémaphores POSIX est donné dans sem_wait(3).
sem_close(3), sem_destroy(3), sem_getvalue(3), sem_init(3), sem_open(3), sem_post(3), sem_unlink(3), sem_wait(3), pthreads(7)
Cette page fait partie de la publication 3.65 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.
Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».