Projet de Programmation Parallèle et Distribuée Rendez-vous synchrone d agents mobiles dans un anneau



Documents pareils
L exclusion mutuelle distribuée

LOGICIEL DE GESTION DE DOCUMENTS PDF : PROJET INFO 1

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Synchro et Threads Java TM

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Polytech Montpellier IG PROJET C Réseaux sociaux : recherche de composantes fortement connexes

Cours de Génie Logiciel

Auto-évaluation Programmation en Java

Java - RMI Remote Method Invocation. Java - RMI

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Un ordonnanceur stupide

Gestion distribuée (par sockets) de banque en Java

Entraînement au concours ACM-ICPC

Définition des Webservices Ordre de paiement par . Version 1.0

Cours 1: Java et les objets

Cours d initiation à la programmation en C++ Johann Cuenin

Une introduction à la technologie EJB (2/3)

Chapitre 2. Classes et objets

Introduction à la Programmation Parallèle: MPI

Conception des systèmes répartis

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

INTERCONNEXION ENT / BCDI / E - SIDOC

TP, première séquence d exercices.

TP1 : Initiation à Java et Eclipse

Plateforme PAYZEN. Définition de Web-services

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Algorithmique et Programmation, IMA

EP60.92 Projet d application pluridisciplinaire La chasse aux trésors

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Calcul Parallèle. Cours 5 - JAVA RMI

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Programmer en JAVA. par Tama

INTERCONNEXION ENT / BCDI / E - SIDOC

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Introduction à la sécurité Cours 8 Infrastructure de clés publiques. Catalin Dima

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Tp 1 correction. Structures de données (IF2)

1 Description générale de VISFIELD

F. Barthélemy. 17 mai 2005

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Génie Logiciel avec Ada. 4 février 2013

Arbres binaires de recherche

Threads. Threads. USTL routier 1

Remote Method Invocation Les classes implémentant Serializable

Site Web de paris sportifs

Manuel d'installation

UFR d Informatique. FORMATION MASTER Domaine SCIENCES, TECHNOLOGIE, SANTE Mention INFORMATIQUE

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

SugarCubes. Jean-Ferdinand Susini Maître de Conférences, CNAM Chaire systèmes enfouis et embarqués. Paris, le 9 janvier, 2009

INEX. Informatique en Nuage : Expérimentations et Vérification. Livrable n M2.1 ÉTUDE ET PARALLÉLISATION. Jérôme Richard

Les structures de données. Rajae El Ouazzani

Date: 22/10/12 Version: 3.2

COMPARAISONDESLANGAGESC, C++, JAVA ET

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Introduction : les processus. Introduction : les threads. Plan

Map-Reduce : un cadre de programmation parallèlle pour l analyse de grandes données. Stéphane Genaud ENSIIE

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

CRYPTOGRAPHIE. Chiffrement par flot. E. Bresson. SGDN/DCSSI Laboratoire de cryptographie

Module.NET 3 Les Assemblys.NET

Solutions du chapitre 4

Plateforme de capture et d analyse de sites Web AspirWeb

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Aide à la prise en charge / PEC+ Utilisation dans les logiciels Mélusine Taxi Live

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Cours Programmation Système

Premiers Pas en Programmation Objet : les Classes et les Objets

UTILITAIRE BRM BACKING UP, RESTORING AND MOVING CONTENT

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Projet gestion d'objets dupliqués

Chapitre 5 : Les procédures stockées PL/SQL

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

INITIATION AU LANGAGE JAVA

Les arbres binaires de recherche

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

DUT Informatique Module Système S4 C Département Informatique 2009 / Travaux Pratiques n o 5 : Sockets Stream

Java Licence Professionnelle CISII,

COMMENT CRÉER UN «DOODLE»?

Module d anonymisation

Projet de programmation (IK3) : TP n 1 Correction

Exercices sur les interfaces

Introduction aux algorithmes répartis

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Création et utilisation de formulaire pdf

Problèmes liés à la concurrence

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

Conventions d écriture et outils de mise au point

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Master IMA - UMPC Paris 6 RDMM - Année Fiche de TP

IFT Systèmes d exploitation - TP n 1-20%

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Composants logiciels Exemples : Java Beans, Enterprise Java Beans

Transcription:

Université de Provence MASTER INFORMATIQUE Programmation Parallèle et Distribuée 2011-2012 Projet de Programmation Parallèle et Distribuée Rendez-vous synchrone d agents mobiles dans un anneau 1 Description générale Le but de ce projet est de réaliser une implémentation d agents mobiles en utilisant Java RMI. Un agent (logiciel) est une unité autonome pouvant exécuter du code sur un serveur. Un agent mobile est un agent qui a la capacité de se déplacer de serveur en serveur. Ici on considérera deux agents mobiles commençant sur des nœuds (machines) différents du réseau et cherchant à se rencontrer. Ce problème est connu sous de nom de problème de rendez-vous. La modélisation du problème est la suivante : Graphe en anneau : Le réseau de serveurs est modélisé comme un graphe. Les nœuds du graphe sont les serveurs et il y a une arête entre deux serveurs si les deux serveurs peuvent communiquer entre eux. On considèrera ici un réseau en forme d anneau dans lequel chaque serveur ne peut communiquer qu avec son voisin de et et son voisin à (voir figure ci-dessous). L orientation est cohérente, c est-à-dire que le voisin de d un nœud v a toujours pour voisin de le nœud v. agent 1 serveur1 serveur6 agent 2 serveur5 serveur2 serveur3 serveur4 Nœuds anonymes : Pour des raisons de sécurité, il est impossible pour un agent d accéder à l adresse de la machine dans laquelle il se trouve. Les nœuds du réseaux sont anonymes et donc indistinguables par les agents. Système synchrone : Les agents sont synchronisés. Ils se déplacent au même moment et à la même vitesse. A chaque étape, les agents calcule une direction et se déplace en même temps. Déplacement des agents : Les agents peuvent se déplacer à chaque étape en choisissant une des trois possibilités suivantes :, ou nul. Dans les deux premiers cas l agent se déplace dans la direction choisie tandis que dans le dernier cas il choisit de ne pas se déplacer pour cette étape. 1

Rendez-vous : On considère que les deux agents se sont rencontrés quand il sont sur le même nœud à la même étape. Dans ce cas l algorithme termine. Identifiants pour les agents : les agents ont chacun un identifiant unique. Cet identifiant est codé sous forme de tableau de booléens. Par exemple, un identifiant possible est : {true,false,true qui est souvent écrit plus simplement 101. Cet identifiant est indispensable au choix des déplacements de l agent. Un agent ne connait pas l étiquette de l autre agent et il est important que l algorithme de rendez-vous fonctionne quelque soit la paire d étiquette choisie pour les deux agents. 2 Algorithme de rendez-vous On considère ici que les agents ont des étiquettes de même taille : par exemple 010 et 101. Le pseudo-code de l algorithme est le suivant : i = 0 Tant qu on a pas rencontré l autre agent faire Pour j de 0 à taille(etiquette) 1 par pas de un Si etiquette[j] == vrai alors se déplacer 2 i fois vers la se déplacer 2 i+1 fois vers la se déplacer 2 i fois vers la Sinon ne pas bouger pendant 2 i+2 étapes i = i + 1 La difficulté de l implémentation en java de cet algorithme est de transmettre l état de l agent lorsqu il change de machine. Un agent devra se souvenir à chaque étape de son pointeur d instruction et donc de l endroit où il se trouve dans le code. 3 Implémentation Java L implémentation Java se fera par le biais de Java RMI. Les classes importantes sont les suivantes : Une classe Direction qui permet de coder une direction :, ou nulle. public i n t e r f a c e D i r e c t i o n { / Renvoie t r u e s i l a d i r e c t i o n e s t v e r s l a d r o i t e / public boolean e s t D r o i t e ( D i r e c t i o n d ) ; / Renvoie t r u e s i l a d i r e c t i o n e s t v e r s l a / public boolean estgauche ( D i r e c t i o n d ) ; / Renvoie t r u e s i l a d i r e c t i o n e s t n u l l e / public boolean estnulle ( D i r e c t i o n d ) ; Une classe Serveur qui correspond aux nœuds du graphes : 2

public i n t e r f a c e Serveur { / Renvoie l e v o i s i n dans l a d i r e c t i o n d du s e r v e u r / public Serveur v o i s i n ( D i r e c t i o n d ) ; / D é p l a c e l e l a g e n t a sur l e s e r v e u r dans l a d i r e c t i o n d / public void déplace ( AgentMobile a, D i r e c t i o n d ) ; / Renvoie l a l i s t e d e s a g e n t s s i t u é sur l e s e r v e u r / public L ist <AgentMobile> agents ( ) Une classe AgentMobile qui implémente l agent mobile : public i n t e r f a c e AgentMobile extends runnable { / f o n c t i o n d é t e r m i n a n t l e p r o c h a i n mouvement de l a g e n t en a c c o r d a v e c l e pseudo c o d e de l a s e c t i o n 2 / public D i r e c t i o n prochainmouvement ( ) ; / f o n c t i o n r e t o u r n a n t l é t i q u e t t e de l a g e n t / public boolean [ ] é t i q u e t t e ( ) / c o d e e x é c u t é par un a g e n t m o b i l e : permet de l a n c e r l e x é c u t i o n de l a g e n t / public void run ( ) ; / r e n v o i e v r a i s i l a g e n t e s t sur l e même s e r v e u r qu un a u t r e a g e n t / public boolean rendezvous ( ) ; Quelque remarques : Les interfaces données sont seulement indicatives des fonctionnalités demandées. Vous êtes en aucun cas obligé de les suivre à la lettre. Chaque événement important (déplacement, rendez-vous) devra être affichée par le serveur avec assez d information pour suivre le comportement du réseau. On devra trouver un moyen de synchroniser les agents mobiles afin qu ils se déplacent en même temps. Un agent ne devra pas commencer son i-ème déplacement avant que l autre agent est effectué ses i 1 premiers déplacements. La stratégie de l agent devra être codée dans la fonction prochainmouvement(). 4 Initialisation L initialisation du réseau se fera à l aide d un fichier contenant les adresses des machines. La i-ème ligne du fichier contiendra l adresse de la i-ème machine de l anneau suivi de V si le nœud ne contient pas d agent au départ ou de l étiquette de l agent sinon. Exemple de fichier pour un anneau avec 6 serveurs dans lequel les deux agents sont situés dans le premier et le cinquième serveur : 3

adresseserveur1 10101 adresseserveur2 V adresseserveur3 V adresseserveur4 V adresseserveur5 01001 adresseserveur6 V Vous devrez implémenter une fonction main qui lancera un Serveur sur une machine. La fonction prendra en argument le chemin du fichier et le numéro (dans l anneau) de la machine sur laquelle la fonction main est lancée. Cette fonction devra : Initialiser sa liste de voisins aux voisins du nœud ayant l adresse de la machine (ligne avant et après la ligne correspondant à la machine). Créer un AgentMobile avec l étiquette spécifiée dans le fichier si le nœud correspond à la position initiale d un agent. Attendre que les autres serveurs soit lancés pour lancer l exécution. 5 Fonctionnalités optionnelles Les fonctionnalités suivantes sont optionnelles et ne doivent être réalisées que si les autres fonctionnalités demandées marchent correctement. Gestion simultanée de plus de deux agents : On veut gérer le rendez-vous de plus de deux agents. Dans ce cas il ne faudra arrêter l algorithme que lorsque pour chaque paire possible d agents (a 1, a 2 ), les agents a 1 et a 2 se sont rencontrés. Réseaux asynchrones : dans un tels réseaux, les agents ne se déplacent pas à la même vitesse. Implémenter une option de synchronisation (-a) rendant le réseau asynchrone. Principalement cela change deux choses : Les agents ne peuvent plus attendre. L algorithme doit donc être différent (voir [1]) Les agents se rencontrent s ils sont sur le même nœud au même moment ou bien s il se croisent au niveau d une arête, c est-à-dire qu un agent entre dans l arête uv par un nœud u alors que l autre agent y est déjà rentré par le nœud v. Script de déploiement : faire un script se connectant en ssh et lançant les serveurs sur chaque machine à partir du fichier de configuration. Autre algorithme : implémenter l algorithme pour l anneau décrit dans [3]. Graphe génériques : gérer la création de réseaux différents d un anneau. On pourra utiliser un fichier.dot pour coder le réseau. Il faudra utiliser une autre algorithme comme ceux décrit dans [2, 3]. 6 Remise du projet Email pour envoi : arnaud.labourel@lif.univ-mrs.fr Le sujet se fait en binôme. Envoyer-moi par email la composition des binômes dés que possible. Le rendu final du projet se fera par email. Il devra comporter : Les codes sources (en tar.gz) Un rapport (en PDF) Un script de compilation (makefile) 4

La date de remise est le dimanche 27 mai 2012. La soutenance de projet aura lieu la semaine du 28 mai au 1er juin 2012. Références [1] G. De Marco, L. Gargano, E. Kranakis, D. Krizanc, A. Pelc, U. Vaccaro, Asynchronous deterministic rendezvous in graphs, Theoretical Computer Science 355 (2006), 315-326. [2] J. Czyzowicz, A. Labourel, A. Pelc, How to Meet Asynchronously (Almost) Everywhere. Proc. 21st Annual ACM-SIAM Symposium on Discrete Algorithms (SODA 2010), 22-30. [3] A. Dessmark, P. Fraigniaud, D. Kowalski, and A. Pelc, Deterministic rendezvous in graphs, Algorithmica 46 (2006), 69-96. 5