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

POSIX C Discussion :

Question sur les variables dans les processus


Sujet :

POSIX C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 130
    Par défaut Question sur les variables dans les processus
    Bonjour,
    j'ai une question sur la nécessité d'avoir une mémoire partagé dans la traduction d'un algo vers le code en langage C. Dans mon algo j'utilise une variable nb_lect entourée de sémaphore pour la protéger, ma question est ai-je besoin de faire une mémoire partagé ou est ce que la protection par sémaphore (exclusion mutuelle) est suffisante ?

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par amateurc Voir le message
    j'ai une question sur la nécessité d'avoir une mémoire partagé dans la traduction d'un algo vers le code en langage C. Dans mon algo j'utilise une variable nb_lect entourée de sémaphore pour la protéger, ma question est ai-je besoin de faire une mémoire partagé ou est ce que la protection par sémaphore (exclusion mutuelle) est suffisante ?
    J'ai rien compris. Tu as combien de processus ?
    Où est définit nb_lect ? Quelle est sa portée ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 130
    Par défaut
    j'ai 2 processus un lecteur et un redacteur, nblect est définie en variable globale, elle est visible dans tout le programme par toutes les fonctions en fait voici mes déclarations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    #include "lib.h" //contient les fonctions sur les sémaphorec avec les includes
     
    #define cle 123
     
    #define tmp_consult 2
    #define tmp_modif 3
     
    #define nb_lect 5
    #define nb_red 10
     
    //les processus
    void lecteur();
    void ecrivain();
     
    //variable
    int nb_lect_en_cours=0;
     
    //pour les semaphores
    int X, SL, S; // X,SL initialisé à 1 et S à 0
    nb_lect_en_cours est entouré par le semaphore SL de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    P(SL);
    nb_lect_en_cours++;
    V(SL);

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Si tes deux processus doivent accéder à la même variable, il faut la placer en mémoire partagée.

    Le sémaphore n'a rien à voir la dedans. Le sémaphore sert simplement à sérialiser les accès à la mémoire partagée. Il ne rend pas ta variable accessible des deux processes.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 130
    Par défaut
    en fait je n'ai que le processus lecteur qui accède a la variable mais plusieurs fois avec une boucle for() donc est ce que je dois quand même utiliser la mémoire partagée ? ou est ce que je ne dois l'utiliser que quand 2 processus distinct utilise une même variable ?

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par amateurc Voir le message
    en fait je n'ai que le processus lecteur qui accède a la variable mais plusieurs fois avec une boucle for() donc est ce que je dois quand même utiliser la mémoire partagée ? ou est ce que je ne dois l'utiliser que quand 2 processus distinct utilise une même variable ?
    Une variable lue que personne n'écrit n'est pas d'une grande utilisé. Ca pourrait être une constante ou une variable à lecture seule...

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Vu son nom, j'avais cru comprendre que cette variable contenait le nombre de lecteurs. Maintenant tu nous dit que tu n'as qu'un lecteur, et qu'en plus il ne fait que lire la variable. Donc, à quoi te sert cette variable ?

    Mais sinon oui, effectivement, tu ne met en mémoire partagé que ce qui doit être accédé par plusieurs processus différents. C'est pour ça que ça s'appelle mémoire partagée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Les variables dans les conteneur
    Par moham104 dans le forum Général Java
    Réponses: 2
    Dernier message: 05/12/2013, 08h55
  2. Question sur la recherche dans les chaînes de caractères
    Par Garamante dans le forum VBScript
    Réponses: 5
    Dernier message: 15/12/2008, 17h33
  3. Réponses: 21
    Dernier message: 18/11/2008, 14h36
  4. Questions sur la navigation dans les répertoires
    Par belle5656 dans le forum Langage
    Réponses: 86
    Dernier message: 03/11/2007, 20h44

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