Projet linux

Fermé
didis - Modifié par BmV le 21/06/2014 à 13:35
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 21 juin 2014 à 13:34
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:

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
21 juin 2014 à 11:49
0
Salut,
j'ai rien compris..
Tellement rien compris que, vu d'ici, tu ne sais même pas quelle question poser..:)

Bon courage.
0
b@stos voila :
Créez un programme comportant un maître (le processus père) et des esclaves chargés de chercher des nombres premiers.
des consignes:
les esclaves sont des fils ''forkés'' par le père
pour dialoguer avec ses 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 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
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
21 juin 2014 à 13:34
Voir réponse #1 !
0