Enseignements

Projet Systeme d'Exploitation - annee 2014-2015

Le but du projet cette annee est de faire une application de recherche de nombres premiers parallele.

Une application parallele est une application qui comporte plusieurs processus qui travaillent simultanement. Dans notre cas, le but est d’exploiter au mieux la puissance de calcul des machines multi-coeurs.

Le principe de notre application est d’utiliser un anneau de processus, P0 a PN-1, dans lequel chaque processur Pi et connecte au processus Pi+1 par un tube. L’anneau est ferme de telle sorte que P0 est connecte a P1 aussi par un tube. L’anneau est orienté, de telle sorte que les messages entre les processus ne peuvent circuler que dans un sens.

Tous les processus sont identiques, a l’exception de P0 et/ou PN par ou les nombres a tester vont entrer dans l’anneau et les nombres premiers trouves vont sortir de l’anneau.

L’idee de l’anneau est de faire en sorte que chaque nouveau nombre premier trouve soit memorise par l’un de Pi, qui sera en charge ensuite de tester la division par ce nombre sur tous les nombres a tester en entree: P1 sera charge des divisions par 2, P2, des divisions par 3, P3 des divisions par 5, … Pour faciliter l’attribution des NP aux processus, on utilisera un jeton.

Cahier des charges pour avoir la moyenne

Une specification du processus Pi vous sera fournie sous la forme d’une version pre-compilee du programme, que vous pourrez tester.

Pour avoir la moyenne, vous devrez:

  • fournir une implementation de ce processus
  • implementer le code qui permet de former un anneau de processus de taille N
  • faire en sorte que les communication entre processus de l’anneau passent exculsivemnt par l’entree et la sortie standard. Les autres communications, par exemple debug, pourront se faire sur la sortie d’erreur.
  • implementer le code qui permet de faire entrer les nombres a tester en entree et les nombres premiers trouves en sortie
  • implementer une terminaison propre du programme, avec la sauvegarde des nombres premiers trouves
  • fournir une solution permettant le redemarrage apres interruption du programme:
    • Permettre le rechargement de l’anneau avec les nombres premiers deja trouvés lors d’une précédente exécution
    • Reprendre la recherche la ou elle s’était arrêtée

Cahier des charges pour avoir le maximum

Pour avoir le maximum, il faudra permettre d’étendre l’anneau à plusieurs machines qui feront chacune tourner une partie des processus de l’anneau global. Ces sections d’anneau pourraient éventuellement être créées et liées entre elles à l’aide de commandes ssh, mais pour pouvoir fermer l’anneau, il faut impérativement passer par un processus python.

Dans ce projet, l’objectif est d’apprendre à utiliser les concepts vus en cours, donc l’utilisation des sockets pour établir les connexions entre machines sera préférée (comprenez, permettra d’obtenir le maximum de points).

Difficultés à résoudre

Voici quelques difficultés à résoudre:

  • Eviter l’interblocage: chaque processus alterne lecture sur l’entrée standard et écriture sur le sortie standard. Si tous les processus de l’anneau commencent une lecture en meme temps, alors c’est le deadlock… A moins qu’une écriture ne débloque la situation
  • Faire entrer des nouveaux nombres et sortir les nombres premiers découvert dans l’anneau: tous les processus sont identiques … sauf éventuellement à l’entrée et la sortie
  • Comme vu en TD, il faut arriver fermer l’anneau.
  • La recherche en parallele ne peut pas commencer avant qu’un certain nombre de nombres premiers n’aient ete decouverts.

Ressources

  • la version compilee du module python a executer par les processus chaines entre eux par de pipe disponible sur polymnie en ~dalle/PROJET_SYS_2015/

Essayez en particulier l’option -h:

python process.pyc -h

Presentation du projet

La derniere seance de TP, le 14 avril sera tres importante: elle vous servira a presenter votre projet a votre enseignant, qui notera l’avancement et les choses qui restent encore a corriger/ameliorer. Idealement, même s’il vous reste encore quelques jours, vous devriez venir avec un projet quasiment terminé à la dernière séance de TP.

Remise du projet

Le projet est a rendre en binome.

Chaque binome devra rendre une archive .zip sur Jalon contenant le code source des fichiers python.

Vous n’avez pas de rapporta rendre, mais votre code devra utiliser copieusement le systeme de documentation integree de python, en suivant l’exemple du programme prrocess.pyc qui vous a ete fourni. (Vous pouvez rediger en francais).

IMPORTANT : Nommage de l’archive Vous ferez attention a respecter le format de remise suivant: Projet_Systeme_NOM1_Prenom1_NOM2_Prenom2.zip

Page d’Accueil

Enseignements 2017-18

Enseignements Antérieurs

Recherche…

edit SideBar

Blix theme adapted by David Gilbert, powered by PmWiki