Provided by: manpages-fr_3.57d1p1-1_all bug

NOM

       sem_overview - Panorama des sémaphores POSIX

DESCRIPTION

       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.

       Sémaphores nommés
              Un  sémaphore nommé est identifié par un nom de la forme /un_nom ; c'est-à-dire un chaîne terminée
              par un caractère nul pouvant avoir jusqu'à NAME_MAX-4 (251) caractères, commençant par  une  barre
              oblique  (« / »)  suivie  d'un caractère ou plus, aucun de ces derniers n'étant une barre oblique.
              Deux processus peuvent utiliser un même sémaphore nommé en passant le même nom à sem_open(3).

              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).

       Sémaphores anonymes (sémaphores en mémoire)
              Un sémaphore anonyme n'a pas de nom. Il est placé dans une région de la mémoire qui  est  partagée
              entre  plusieurs  threads  (sémaphore partagé par des threads) ou processus (sémaphore partagé par
              des processus). Un sémaphore partagé par des threads est placé  dans  une  région  de  la  mémoire
              partagée  entre les threads d'un processus, par exemple une variable globale. Un sémaphore partagé
              par des processus doit être placé dans une région de mémoire partagée (par exemple un  segment  de
              mémoire  partagée  System V  créé  avec shmget(2), ou un objet de mémoire partagée POSIX créé avec
              shm_open(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.

   Versions
       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.

   Persistance
       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.

   Édition des liens
       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.

   Accéder aux sémaphores nommés par le système de fichiers
       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.

CONFORMITÉ

       POSIX.1-2001.

NOTES

       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).

EXEMPLE

       Un exemple d'utilisation des diverses fonctions des sémaphores POSIX est donné dans sem_wait(3).

VOIR AUSSI

       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)

COLOPHON

       Cette page fait partie de la publication 3.57 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/.

TRADUCTION

       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> ».

Linux                                              13 mai 2012                                   SEM_OVERVIEW(7)