Nous avons supposé
que lors du démarrage d’une machine un deamon pvm été
lancé et que la machine été ajouté à
la machine virtuelle pvm.
Nous avons utilisé JavaPVM comme une sur-couche du réseau
physique. Nous avons établi qu’une machine est en fonction lorsque
notre application tourne et éteinte dans les autres cas. Cela nous
permet de simuler l’arrêt, le démarrage, le crash des machines.
|
Université de la Méditerranée Ecole Supérieure d’Ingénieurs de Luminy Etudes Supérieures en Ingénierie Informatique |
PROJET : JavaPVM Début : 20.03.1998 Fin : 10.05.1998 |
||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||
| Etabli par : Stéphane BENOLIEL, Philippe ELDIN | |||||||||||||||||||||||||||||||||||||||||||||
Les fonctionnalités de l’application
A tous moments :
? Connaître le nombre et le nom des machines du réseau
? Connaître le nombre et le nom des machines allumées
? Connaître le nombre et le nom des machines éteintes
? Les niveaux de contrôle des machines connectées :
? Ajouter et supprimer des groupes.
? Ajouter et supprimer des machines à un groupe.
? Connaître l’état des machines d’un groupe.
Il doit pouvoir communiquer :
? Envoie d’un message à une machine.
? Des messages de commande (top,df... voir Reboot)
? Des messages de communication simple.
Cette application a une interface utilisateur permettant d’exécuter
et de visualiser toutes les commandes décrites.
? Avertir de sa mort : Il envoi le message Je vous quitte
? Avertir de sa mort : Il envoie le message Je vous quitte
? Recevoir des messages des autres maîtres.
? Demander une exclusivité de gestion d’une station esclave :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Pour permettre la gestion des différentes machines, les maîtres
possèdent une table regroupant les informations de chaques machines.
Cette table et unique pour chaque maître et se compose de la façon
suivante :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Maintient de la cohérence entre les maîtres
Pour la gestion des informations d’états et de la cohérence
entre maîtres, il existe des priorités.
Quand une machine rencontre un problème elle passe en état 2 ou 4; 4 si c’est un problème sur la cohérence des groupes sinon 2, ces états blocs le processus d’envoi de commandes.
En état 0 : Lors de la réception d’une trame d’information l’état de l’esclave passe en état 1.
En état 1 : Si aucun trame ne parvient au maître dans les délais impartis par notre timer, l’état de l’esclave passe en état 2.
En état 2 : l’état est rétabli à 1 lors de la réception d’une trame d’information émise par l’esclave. Si aucun trame ne parvient au maître dans les délais impartis par notre timer, l’état de l’esclave passe en état 0.
En état 3 : l’état est rétabli à 1 lors de la réception d’une trame d’information émise par l’esclave. Si aucun trame ne parvient au maître dans les délais impartis par notre timer, l’état de l’esclave passe en état 2.
En état 4
: une demande de groupe est envoyée à cette machine. Lors
de la réception de la trame de groupe le maître remettra l’état
de la machine à 1, si se dernier est resté à
4 (c’est à dire aucun problème n’est survenu entre
le moment de la demande et la réception de la trame de groupe )
Remarque : à chaque réception d’information, le maître remet à jour sa table et en particulier le champ date. A chaque nouvelle connexion ou à chaque reconnexion (suite à un état 0) le maître demande les groupes de la machine qui vient de se connecter.
L’applet interaction : c’est un thread qui tourne au lancement de l’applet il a pour but de faire la liaison entre l’utilisateur et le produit.
Affichage : c’est un thread qui rafraîchit les champs de l’applet ou qui modifie son aspect lors d’une manipulation de l’utilisateur.
Réception : c’est un thread qui attend les informations et les traite si ce sont des informations de tables il lance un thread de traitement spécifique réception table.
Réception table : Il gère la réception des tables des autres serveurs, et maintient la cohérence en effectuant des mises à jour le cas échéant.
Emission : Il transmet les informations des esclaves (deamon), les tables des maîtres ainsi que les commandes et réception de commande.
Timer : Déclenche des émissions de tables aux autres maîtres
initsend(PvmDataRaw) initialise un buffer en mémoire partagée
pkstr(content) met dans le buffer le string content
upkstr(msg) récupère le contenu du buffer dans un tableau de char
bcast("maître", _StringMsg) envoie le contenu du buffer en tant que caractère sur les machines appartenant au groupe maître
joingroup(pipo) associe la machine qui exécute cette commande au groupe pipo et retourne –1 s’il y a eu une erreur
lvgroup(legroupe) dissocie la machine
qui exécute cette commande du groupe pipo et retourne –1
s’il y a eu une erreur
L’accès aux différentes fonctionnalités se fait par interaction avec les boutons et les menus déroulants, des ensembles de boutons, de champs, et de menu déroulant pilotent une fonction.
Création d’une nouvelle
machine sur le réseau pvm : Soit en se loggant sur la machine elle-même,
suivi du lancement de l’appletviewer. Soit en indiquant dans le champ approprié
un nom de machine sur laquelle tourne un deamon pvm puis en choisiant dans
le menu déroulant New maître ou New esclave verifier
le champ display !.
Pour envoyer une commande il faut indiquer la commande elle même, choisir la machine à qui la commande est destinée parmi le menu déroulant créé à cet effet ou saisir son nom dans le champ approprié, le display dans le cas de l’ouverture d’une fenetre, puis presser le bouton Commande.
Pour afficher les tables d’informations du maître presser sur Table info l’affichage aura lieu dans la zone de contrôle.
Le bouton Effacer
permet d’effacer la zone de contrôle
Pour adjoindre une machine a un groupe : il faut choisir le nom de la machine par le menu déroulant ou le saisir, saisir le nom du groupe auquel cette machine doit être associée dans le champ approprié puis faire glisser le menu déroulant sur join group.
Pour killer une machine c’est a dire simuler un crash d’une : il faut choisir le nom de la machine par le menu déroulant ou le saisir, puis faire glisser le menu déroulant sur kill.
Pour demander ou abandonner une exclusivité sur un groupe ou une machine il faut choisir le nom du groupe ou de la machine par le menu déroulant ou le saisir puis faire glissé le menu déroulant sur exclusivité ON ou exclusivité OFF.
Pour envoyer un simple message à une autre machine taper le texte dans la zone de contrôle puis pressez sur le bouton commande, avec le champ commande vide.
Champ de saisi du nom de machine déclenche l’affichage dans le
menu déroulant sous le champ de saisi du nom de machine des groupes
auxquels la machine appartient, parallèlement est extrait de la
table d’information du maître les informations sur l’état
d’administration de la machine. Cas particulier : si vous saisissez le
nom d’un groupe à la place d’un nom de machine le menu déroulant
sous le champ de saisi vous indiquera les machines appartenant au groupe
saisi et parallèlement le nombre de machines de se groupe sera indiqué
dans le champ contiguë au menu déroulant join leave ...
La réalisation nous a demandé environ 200 heures de travail, décomposée en plusieurs phases. Une grande partie a été consacrée à la réflexion et au choix des algorithmes à utiliser, en particulier pour la synchronisation des informations, sur un système distribué. Ce travail nous a apporté une connaissance accrue des différentes méthodes de partage d’informations, et de maintient de la cohérence sur un environnement distribué. En effet, pour choisir la méthode la plus adaptée, nous avons essayé de faire le tour des différentes méthodes possibles.
Après avoir tester longuement notre application, nous nous sommes
rendu compte des difficultés d’utilisation lié à JavaPVM.
Un certain nombre de modifications pourrait être utile pour l’amélioration
du logiciel :
Diagramme de la station esclave .................................................................... 6
Diagramme de la station Maître ...................................................................... 8
Transition d’états dans la table d’information .................................. 11
Decomposition Multi-Threading ...................................................................... 12
Utilisation de l’Applet ...........................................................................................
14