Boucles processus (Unix)

Résolu/Fermé
Farkras - 2 juil. 2014 à 00:03
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 2 juil. 2014 à 21:32
Bonjour,
Depuis ce lien http://dpt-info.u-strasbg.fr/~simon.thierry/enseignement/06-07/FSE-L2/td.pdf
j'essaye de faire l'exercice suivant :

Écrivez un programme ayant la syntaxe suivante :
matproc n m
L'action de ce programme doit être de générer n
processus, chacun d'entre-eux devant générer n
processus à son tour, et ainsi de suite jusqu'à m
niveaux.
Combien de processus sont générés au total ?

Je ne comprends absolument pas...
Si je prend littéralement le sujet, ça donnerait :
" générer n
processus, chacun d'entre-eux devant générer n
processus à son tour, chacun d'entre-eux devant générer n
processus à son tour, chacun d'entre-eux devant générer n
processus à son tour etc." ce qui n'a pas de sens...

C'est pas plutôt n-1 (ou n+1) pour la 2ème "génération" ?
Que signifie "niveaux" ?

Soit l'énoncé est mal formulé, soit je suis idiot...

Merci d'avance !

2 réponses

Bon vu que tu as un peu de mal je te fais un schema

http://dumpt.com/img/files/5rpwmek0zm5an0oz6vku.jpg
Le process générateur est en haut n=2 m=3


Alors tu as trouvé la réponse à ta question ?
Non ?

http://www.dumpt.com/img/files/xjwlaiotnyi6x0xtvo1t_thumb.jpg
Voila, après dans de cas je ne compte pas le premier process qui créé les autres process si c'est le cas tu mets plus 1, pas sur la somme évidemment mais avec des parenthèses autour.
0
Merci,
je comprend ton exemple.
Mais l'utilisateur n'a pas le droit de demander un n différent de 2 du coup ?
Parce que c'est pas dit dans l'énoncé...
0
Bha si tu calculle la somme de n^m avec m en partant de 1 vers x tu obtiens
(n(n^x -1))/ (n-1)

Ainsi pour l'exemple tu as (2*(2^3-1))/(n-1) ce qui donne (2*7)/(1) = 14

Ainsi pour une valeur de n=25 et m=5 tu obtiens
: 10 172 525 si mes calculs sont correct

Tu es en quel niveau d'études?
0
Non mais je comprends le calcul, c'est juste que si l'utilisateur entre un n à 3, je vois pas exactement comment générer 3 processus à partir d'un seul.
fork() n'en créant que 2...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
2 juil. 2014 à 21:32
fork() n'en créant que 2...
Non. fork() ne créé qu'un processus à chaque appel. Il suffit donc de l'appeler autant de fois que tu as besoin de processus...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
2 juil. 2014 à 11:04
Bonjour,

Le programme génère n processus (1er niveau)
Chacun des processus créés génère à leur tour n processus (2ème niveau).
Chacun des processus nouvellement créés génère à leur tour n processus (3ème niveau).
Ainsi de suite jusqu'au niveau m.

Cdlt,
0