IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

IPC sous Unix


Sujet :

Linux

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut IPC sous Unix
    Bonjour,

    J’aimerai savoir quel type d’IPC utiliser pour mon application. Je m’explique :

    J’ai deux applis qui actuellement communiquent par queues de messages (sysV) et j’aimerais changer le types d’IPC afin de gagner en vitesse sans toutefois perdre en stabilité. Les données échangées ne dépassent pas 3950 octets.

    La première appli démarre puis se forke, ensuite le fils créé plusieurs messages queues fait son taff, supprime les queues puis meurt, le père reforke le nouveau fils créé plusieurs queues …

    Qu’en pensez vous ??
    Merci

    edit: systèmes: RHEL 4 et Solaris 8

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    les IPC n'intéressent personne

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Ashin Voir le message
    La première appli démarre puis se forke, ensuite le fils créé plusieurs messages queues fait son taff, supprime les queues puis meurt, le père reforke le nouveau fils créé plusieurs queues …
    Si les data ne sont traitées que par un même fils, pas besoin d'IPC.

    Maintenant, si les msq sont trop longues pour toi et que ton souci est la rapidité, alors te faut utiliser les shm.
    En fait, le seul avantage d'une msq c'est qu'il y a un identificateur numérique permettant un certain type de sélection. Tu peux entrer une data numéro 1, une data numéro 2, une autre numéro 2 et une 4° numéro 1, si tu demandes ensuite les numéro 1 tu récupèreras la 1° et la 4°.
    Un autre avantage (qui peut aussi ne pas l'être selon la façon de voir) est qu'une data récupérée est automatiquement effacée.

    Avec la shm, tu places simplement des octets dans une map que tu viens lire quand tu veux. C'est ce qu'il y a de plus rapide. Généralement on la couple avec un sem pour éviter les accès concurrents mais si t'en as pas besoin...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    je me suis mal exprimé, en fait le fils créé des queues pour communiquer non pas avec son père mais avec un autre process. Le père est seulement là en cas de problème (lors de la comm ou autre) et que le fils se plante.

    donc en gros, pour simplifier ça revient à deux process qui communiquent par mq

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Ashin Voir le message
    je me suis mal exprimé, en fait le fils créé des queues pour communiquer non pas avec son père mais avec un autre process. Le père est seulement là en cas de problème (lors de la comm ou autre) et que le fils se plante.

    donc en gros, pour simplifier ça revient à deux process qui communiquent par mq
    Ok. Ben ils peuvent communiquer aussi
    - par socket mémoire => le père crée la socket et chaque fils lit ou écrit le coté qui va bien
    - par socket fichier => idem
    - par shm => le père crée la shm et chaque fils la rattache à un pointeur perso puis ensuite les fils y vont allègrement à coup de memcpy()

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    actuellement j'hésite entre socket local et pipe nommé (FIFO) qui sont moins lourds

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Ashin Voir le message
    actuellement j'hésite entre socket local et pipe nommé (FIFO) qui sont moins lourds
    Sûrement pas. Les pipes nommés (fichier de type "p") nécessitent un accès disque. Ils ne sont certainement pas "moins lourds" que les pipes mémoire (surtout si tu prépares bien ton truc, avec une structure permettant de manipuler facilement le pipe...)
    Et ces deux outils étant contrôlés par le noyau (verrouillage des processus jusqu'à synchronisation), consomment forcément du temps cpu (temps utilisé pour le contrôle), temps qui n'est pas consommé par les shm puisque celles-ci ne sont pas contrôlées (tu parlais au début de rapidité...)

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    oui mais on ne peut pas utiliser les pipes mémoires s'ils n'ont pas la même racine, non ?

  9. #9
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Ashin Voir le message
    oui mais on ne peut pas utiliser les pipes mémoires s'ils n'ont pas la même racine, non ?
    Exact. Mais la shm est accessible par tout le monde (pour peu que chacun connaisse la clef)...

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    je vais tester les shm aussi alors, mais bon s'il faut que je les couple avec des sems, je pense pas être plus rapide que les sockets

  11. #11
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 739
    Points : 31 068
    Points
    31 068
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Ashin Voir le message
    mais bon s'il faut que je les couple avec des sems, je pense pas être plus rapide que les sockets
    Ah non. J'ai dit que "généralement" on les couple avec les sem pour éviter les problèmes de data incorrecte (data lue alors qu'un autre process est en train de la modifier) mais si ce cas est peu probable ou pas grave, tu peux très bien éviter les sem !!!

Discussions similaires

  1. [Process] pb exec sous unix, ne plante pas mais ne fait rien
    Par NiBicUs dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 10/12/2004, 06h27
  2. [Kylix] Kylix sous UNIX
    Par gRRosminet dans le forum EDI
    Réponses: 3
    Dernier message: 09/11/2004, 18h07
  3. Montage sur Debian de AFPS sous UNIX
    Par Harbaingan dans le forum Administration système
    Réponses: 2
    Dernier message: 14/01/2004, 23h03
  4. Chargement dynamique de DLL sous Unix
    Par Willou dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 18/12/2002, 19h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo