TP2: Système réparti
On vous demande de faire un agent (programme Java) qui est conçu pour fonctionner en équipe avec d'autres copies (ses clones) qui sont actifs en même temps sur le réseau local de l'Université. Le travail en équipe est réduit à sa plus simple expression; ce qui est important dans ce TP c'est organiser:
Les agents doivent afficher en meme temps la meme information. En particulier, ils affichent tour à tour les AID (AgentID) des participants. Par exemple, si nous avons 3 agents avec les AID, 11, 69 et 123. Tous les agents affichent 11, puis 69 puis 123 et ca recommence: 11, 69, 123, 11, 69....
On fait l'hyphothese que chaque agent travaille a une vitesse differente, prenant un temps aleatoire (selon une negative exponentielle avec moyenne 1 sec et maximum 10 sec) pour chaque étape. Autant que possible, on veut que les agents affichent en même temps mais ils ne pourront passer au prochain ID que quand le plus lent aura terminé.
Pour gerer la synchronisation, le groupe se choisit un CHEF. C'est lui qui attend que tous aient fini avant de passer à l'affichage du prochain AID. Si le chef vient à quitter, le groupe devra déterminer un autre chef.
Pour visualiser le comportement global, chaque agent a une interface ou il affiche son AID ainsi que le AgentId courant (en grosses lettres). Il doit y avoir aussi deux indications graphiques: a) si l'agent est le CHEF du groupe et 2) s'il a fini son travail d'affichage. Finalement, il doit y avoir un bouton QUIT pour terminer. [Remarquez qu'on peut ausi terminer l'execution avec un CTL-C].
Vos agents devront executer plusieurs taches en parallele [exigeant plusieurs Threads]:
Le TP se fera en Java en équipe de deux personnes. On vous demande de remettre avant le debut du cours du mercredi 12 février: votre programme(s) avec "remise"
% remise ift6802 tp2 [et un rapport de 5-10 pages qui décrit les problèmes rencontrés et les solutions que vous avez trouvées. NOTE: ceci n'est pas une documentation du code....]
Jean Vaucher (25 jan 2003)