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

Programmation système Discussion :

Synchronisation de processus


Sujet :

Programmation système

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Août 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2018
    Messages : 62
    Points : 35
    Points
    35
    Par défaut Synchronisation de processus
    Bonjour,

    Je sollicite votre aide sur le sujet de la synchronisation de processus .... .

    Je ne comprend pas bien la notion de "tant que" et "fintant que", j'ai essayé de faire mon exercice mais je crois que je passe à côté.... Si l'un d'entre vous pouvait m'aider ou m'indiquer ou je peux trouver de la doc sur le sujet svp

    "Deux processus A et B et une variable Y. Y est initialisée à0 et partagée par A et B .

    Processus A Processus B
    Début Début
    Affiche "A" Affiche"B"
    Y=Y+1 Tant Que Y mod 2 est égal à 0
    Tant Que Y mod est égal à1 Attendre
    Attendre inTantQue
    FinTantQue Affiche "C"
    Affiche "D" Y=Y+1
    Fin Fin

    Premier cas : on lance A puis B
    La sortie écran sera 1 car A commence à s’exécuter puis doit attendre que B s'exécute puis A fini son intruction en récupérant le résultat de B qui est 0.

    deuxième cas : on lance B puis A
    La sortie écran sera 2 car B commence à s’exécuter puis doit attendre que A s'exécute puis B fini son intruction et récupère le résultat de A qui est 1 soit la sortie écran =2

    Ma logique est-elle correcte?

    Merci à vous,

    Pluplume

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par Pluplume Voir le message
    Bonjour,

    Je sollicite votre aide sur le sujet de la synchronisation de processus .... .

    Je ne comprend pas bien la notion de "tant que" et "fintant que", j'ai essayé de faire mon exercice mais je crois que je passe à côté.... Si l'un d'entre vous pouvait m'aider ou m'indiquer ou je peux trouver de la doc sur le sujet svp

    "Deux processus A et B et une variable Y. Y est initialisée à0 et partagée par A et B .

    Processus A Processus B
    Début Début
    Affiche "A" Affiche"B"
    Y=Y+1 Tant Que Y mod 2 est égal à 0
    Tant Que Y mod est égal à1 Attendre
    Attendre inTantQue
    FinTantQue Affiche "C"
    Affiche "D" Y=Y+1
    Fin Fin

    Premier cas : on lance A puis B
    La sortie écran sera 1 car A commence à s’exécuter puis doit attendre que B s'exécute puis A fini son intruction en récupérant le résultat de B qui est 0.

    deuxième cas : on lance B puis A
    La sortie écran sera 2 car B commence à s’exécuter puis doit attendre que A s'exécute puis B fini son intruction et récupère le résultat de A qui est 1 soit la sortie écran =2

    Ma logique est-elle correcte?

    Merci à vous,

    Pluplume
    La sortie écran ne sera 1 ou 2 parce que rien n'affiche le contenu de Y. Il n'y aura que des A, B, C ou D.
    Si on lance A puis B, on aura un scénario comme celui-ci:
    • A affiche "A", met Y à 1
    • A commence sa boucle d'attente parce que Y est impair
    • On lance B
    • B affiche "B"
    • B ne fait pas de boucle d'attente parce que Y n'est pas pair
    • B affiche "C", met Y à 2
    • La boucle d'attente de A se termine parce que Y n'est plus impair
    • A affiche "D"

    Si on lance B puis A, on aura un scénario comme celui-ci:
    • B affiche "B"
    • B commence sa boucle d'attente parce que Y est pair (il vaut zéro)
    • On lance A
    • A affiche "A", met Y à 1
    • La boucle d'attente de B se termine parce que Y n'est plus pair
    • A commence sa boucle d'attente parce que Y est impair
    • B affiche "C", met Y à 2
    • La boucle d'attente de A se termine parce que Y n'est plus impair
    • A affiche "D"
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Août 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2018
    Messages : 62
    Points : 35
    Points
    35
    Par défaut Merci
    Merci Médinoc !!!

    J'étais totalement passée à côté de la notion de pair et impair...

    Donc si j'ai bien compris on peut dire que les deux processus sont synchronisés car lorsque l'un des deux s’exécute l'autre est en attente active et reprend seulement quand l'autre sort de la boucle.

    cdt,

    pluplume

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Août 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2018
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    et du coup si j'en viens au clonage de processus :

    par exemple si je suis dans un processus qui dit que tant que la condition est vraie il doit créer un nouveau processus avec le contexte courant.

    Par exemple:

    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
    Procédure appli()
    Entier i
    Début 
         i=4
       Tant que i>0 faire
        Créer un processus identique à moi (clonage)
         i=i-1
        
     Si je suis le processus fils
           alors 
           i=i-2
            Finsi
             
    Affiche i 
             Fin tant que 
         Fin
    Littéralement si je traduis le code :

    puisque i = 4
    1 premier processus fils est créé qui donne i=3
    i est toujours >0 donc un deuxième processus fils est créé => i=2
    i> 0 donc un troisième processus est créé => i=1
    enfin un dernier processus fils est créé avec i=0
    C'est la fin de la boucle
    la sortie écran est donc 0 avec i=0.

    Par contre je ne comprends pas à quel moment est ce que je rentre dans l'exécution du processus fils ?

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    C'est indenté comme l'as de pique, ça!
    C'est déjà plus compréhensible ainsi:
    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
    Procédure appli()
    Entier i
    Début 
    	i=4
    	Tant que i>0 faire
    		Créer un processus identique à moi (clonage)
    		i=i-1
    
    		Si je suis le processus fils
    		alors 
    			i=i-2
    		Finsi
    
    		Affiche i 
    	Fin tant que 
    Fin
    Ensuite, ceci ressemble à un exercice classique de "combien de processus fils vont-ils être créés par ce code qui forke en boucle (non-infinie)?" et j'ai horreur de ces trucs-là, donc je ne vais pas forcément regarder ça en profondeur.

    Une précision toutefois:
    Le clonage crée un nouveau processus exactement au même point, mais toute variable qui n'est pas explicitement partagée est dupliquée. Ce qui veut dire qu'après le premier clonage, il y a deux compteurs i, un dans le père et un dans le fils; et la seconde génération complique ça encore plus.
    -->Mon conseil: Déroule l'algorithme sur papier en commençant au milieu de la ligne, puis sépare quand sa forke, comme si tu dessinais un arbre (ou ses racines). C'est encore le meilleur moyen de ne pas trop s'emmêler les pinceaux.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Août 2018
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2018
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    Merci de ta réponse, et désolé pour l'indentation en as de pique je ferais attention à l'avenir !

    Encore une question après j'arrête ^^ est-ce que tu sais si sur ce site je peux retrouver un cours justement sur toutes ces notions de processus et de clonage et surtout où ? (car j'ai fouiné un peu mais pas trouvé)

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Désolé, question documentation je ne m'y connais pas trop.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Synchronisation de processus
    Par titite dans le forum Administration système
    Réponses: 2
    Dernier message: 04/02/2008, 00h01
  2. Synchronisation de processus
    Par mrrenard dans le forum C#
    Réponses: 11
    Dernier message: 11/01/2008, 15h00
  3. synchronisation des processus a l'aide des signaux
    Par dammak_info dans le forum Linux
    Réponses: 1
    Dernier message: 29/12/2007, 08h59
  4. Réponses: 2
    Dernier message: 29/03/2007, 17h43
  5. [Synchronisation des processus] Problème du boulanger
    Par Giovanny Temgoua dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 26/02/2005, 12h40

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