Code source svp

Fermé
Utilisateur anonyme - 4 nov. 2015 à 18:34
jordane45 Messages postés 38344 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 décembre 2024 - 4 nov. 2015 à 18:50
Bonjour, voila j'ai un projet de linux et j'ai rien compris d'ou debuter d'ou finir voila ce projet :
Une manière de déterminer les nombres premiers dans un intervalle est de découper l'espace de recherche en plusieurs sous-intervalles et d'affecter la recherche dans chaque intervalle à un processus créé par le père. Ainsi si on découpe l'intervalle [1, N] en p sous-intervalles, le processus père lance p fils et le fils k recherche l'intervalle [kN/p + 1, (k + 1)N/p], k = 0,...,p - 1. Cette technique permet, si on dispose d'une machine équipée de p processeurs, de paralléliser la recherche (et d'essayer de retourner le résultat p fois plus vite). Elle a cependant l'inconvénient d'affecter des espaces de recherche dont les temps d'exploration sont inégaux. Ainsi le processus 0 terminera la recherche sur [1, N/p] bien avant le processus p - 1. Il (et donc un des processeurs de la machine) sera donc oisif jusqu'à la fin du programme. La charge de travail entre les processus (et donc les processeurs) est inégalement repartie.
Une solution (celle que vous devez programmer) pour repartir la charge de travail, consiste a utiliser un « pool » de p processus travailleurs à qui un processus maître affecte successivement des travaux de recherche de nombres premiers dans de petits intervalles (taille T << N/p). Quand un travailleur a fini sa recherche, le maître lui affecte la recherche dans un intervalle encore inexploré.
Pour votre implantation :
le maître est le processus père;
les p travailleurs sont des fils « forkés » par le père
pour dialoguer avec les fils, le père utilise un pipe différent pour chaque fils
pour dialoguer avec le père, les fils utilisent un pipe commun
le dialogue est le suivant :
le père passe à un fils les bornes de l'intervalle de recherche par le pipe associé au fils
le père passe deux entiers de valeur 0 pour indiquer au fils que ces travaux sont terminés et qu'il peut se terminer
le fils renvoie au père les nombres premiers trouvés et 0 pour indiquer qu'il a terminé l'exploration de l'intervalle
pour s'identifier auprès du père, un fils précède chaque nombre envoyé par son numéro
A voir également:

1 réponse

jordane45 Messages postés 38344 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 décembre 2024 4 717
4 nov. 2015 à 18:50
0