Votre IP: 38.107.179.240 
  
 
Google
 
Accueil e-mail Linux
Linux
Perl
Perl
C
Langage C
Dico
Dictionnaire
Biblio liens
Bibliothèque de liens
Index articles
Index articles
 

Date création : 30-03-2008 14:17:03

Linux  Vous êtes dans : GNU/Linux Astuces / Pages man [Section7 - Divers]


SEM_OVERVIEW

 

Index

  1. NOM
  2. DESCRIPTION
    1. Sémaphores nommés
    2. Sémaphores anonymes (sémaphores en mémoire)
  3. DÉTAILS SPÉCIFIQUES À LINUX
    1. Versions
    2. Persistence
    3. Liaison
    4. Accéder aux sémaphores nommés par le système de fichiers
  4. CONFORMITÉ
  5. NOTES
  6. EXEMPLE
  7. VOIR AUSSI
  8. TRADUCTION

 

NOMIndex

sem_overview - Panorama des sémaphores POSIX  

DESCRIPTIONIndex

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. 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 Système V créé avec semget(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).  

DÉTAILS SPÉCIFIQUES À LINUXIndex

 

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.  

Persistence

Les sémaphores POSIX nommés sont persistants dans le noyau : s'il n'est pas supprimé avec sem_unlink() un sémaphore existe tant que le système n'est pas éteint.  

Liaison

Les programmes utilisant l'API des sémaphores POSIX doit être compilé avec cc -lrt 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.nom.  

CONFORMITÉIndex

POSIX.1-2001.  

NOTESIndex

Les sémaphores Système 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 Système V. En revanche, les sémaphores POSIX sont moins largement disponibles que les sémaphores Système V (surtout sur les systèmes plus anciens).  

EXEMPLEIndex

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

VOIR AUSSIIndex

sem_close(3), sem_destroy(3), sem_init(3), sem_getvalue(3), sem_open(3), sem_post(3), sem_unlink(3), sem_wait(3), pthreads(7)  

TRADUCTIONIndex

Cette page de manuel a été traduite et mise à jour par Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions disponibles sur http://manpagesfr.free.fr/, mais est gérée par l'équipe francophone de traduction de Debian au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».


Création : octobre 2007  © Tous droits réservés 2007 linux-perl-c
Valid HTML 4.01 TransitionalValid CSS