Ecole Nationale des Sciences de l’Informatique A. U. : 2011/2012
EXAMEN
Systèmes et Applications Répartis
Classe/Filières: II2-RSR&SLE Date: 15/05/2012
Durée : 2h00 Documents: Non autorisés
Responsables : F. Najjar & N. Ben Azzouna Nb. Pages: 3
Prière de lire attentivement l’énoncé et de respecter les notations du texte. On demande des réponses brèves mais claires et précises.
Exercice1 : Questions diverses (6,5 points –1,5+4(0,75+1+0,5+0,75+1)+1)
1. Que signifient les acronymes suivants : CORBA, IOR, IIOP, JMS, MOM, POA.
2. Dire (en 1-2 phrase(s)) quelle est la différence fondamentale entre chacune des paires (respectivement triplets) de termes suivants :
1. RMI, CORBA, et MOM?
2. Communication synchrone et communication asynchrone ? en donnez d’exemples.
3. ’’Message Queue’’ et ’’Topic’’ dans MOM?
4. JMS et JXTA?
5. Un système P2P décentralisé et un P2P structuré? en donnez d’exemples de systèmes types correspondant à chaque cas ?
3. Complétez le tableau suivant par vos connaissances sur la messagerie MOM (vue en cours) et votre culture générale sur la messagerie email :
| | |
| --- | --- |
| MOM | email |
| …………………… | SMTP message |
| …………………… | Mail box |
| …………………… | SMTP client |
| …………………… | Mailing list |
Exercice 2 : Java-RMI (5 points— 1+1+1,5+0,5+0,5+0,5)
On considère un service géométrique de manipulation de rectangles accessible sur le réseau. En informatique géométrique, un point P dans le plan est définie par ses coordonnées <x, y> et un rectangle R est représenté par les deux points extrêmes <P1, P2> (voir Figure 1)
P2<x2,y2>
P1<x1,y1>
Figure 1. Représentation géométrique d’un rectangle (et son décalage)
Ce service offre les méthodes suivantes :
- int surfaceRectangle(Rectangle)
- Rectangle DecalerRectangle(Rectangle, int x, int y)
1. Ecrire l’inteface java IRectangle, permettant de définir ces deux opérations sur Rectangle.
2. Comment doivent être les paramètres ou valeurs de retour afin de les transmettre via le réseau ? Ecrire alors la classe Rectangle, qui permet de décrire les coordonnées d’un rectangle.
3. Donnez la classe implémentant IRectangle, IRectangleImpl.java.
4. Quelle est la commande permettant de générer les stubs afin d’appeler ces opérations à distance ?
5. Quelle est l’instruction qui demande le registry, tournant sur la machine ‘’ensi’’, de vous renvoyer la référence de l’objet, nommé ’’opRect’’.
Publicité
6. Une fois la référence obtenue, invoquez SurfaceRectangle de l’interface sur cet objet.
Exercice 3 : OMG-CORBA (4 points— 1+1,5+1,5)
1. A quoi correspond le fichier code suivant, et dire quelle est son extension ?
module Bank {
interface Account { float balance(); };
interface AccountManager { Account open(in string name);
};
};
1. Indiquer les erreurs de syntaxe contenues dans le fichier suivant. Donner à chaque fois la règle qui n’est pas respectée.
module clientserveur {
string description();
interface Cours {
string date(long seance );
double moyenne( in sequence<float> notes );
interface TP {
string responsable();
};
};
};
1. En supposant qu'on utilise le compilateur idlj de la JDK pour faire la projection en Java, donnez la commande nécessaire au fichier de la question 2 pour générer le stub d'un client se trouvant sur une machine A. Citez tous les fichiers générés dans ce cas.
Exercice 4 : Système de fichiers répartis (4,5 points— 2(1+1)+2,5(0,5+1+1)).
1. Supposons que 2 processus accèdent au même fichier F :
1. Qu’est-ce qu’Unix gère afin d’assurer la sémantique "une-copie" lorsque les deux processus sont sur la même machine ?
2. Supposons maintenant que ces processus soient sur deux machines différentes : comment est assurée la consistance du cache d’un client AFS, lors d’une opération d’écriture par l’un des processus clients ?
2. En utilisant la figure ci-dessous, décrivez le fonctionnement du système de fichiers répartis GFS (Google FS) :
1. A quoi sert le chunk handle dans le GFS ?
2. Où sont sauvegardés les fichiers ? dire brièvement comment ?
3. Décrivez une opération de lecture ?

BON TRAVAIL
Proposition de correction
Systèmes et applications Répartis
Du 15/05/2012
Exercice1 : Questions diverses (6,5 points –1,5+4(0,75+1+0,5+0,75+1)+1)
1. Que signifient les acronymes suivants :
Publicité
CORBA –Common Object Request Broker Architecture
IOR –Interoperable Object Reference
IIOP –Internet Inter-ORB Protocol
JMS –Java Message Service
MOM –Middleware Oriented Message
POA –Portable Object Adapter.
1. Dire (en 1-2 phrase(s)) quelle est la différence fondamentale entre chacune des paires (respectivement triplets) de termes suivants :
1. RMI, CORBA, et MOM? 🡪 RMI vs. CORBA essent. L’interopérabilité de corba via les différents langages (C++, …). Par contre RMI est totalement java. RMI, corba sont OO par requête/réponse par contre MOM orienté message
2. Communication synchrone et communication asynchrone ? en donnez d’exemples. 🡪 Envoi bloquant dans une comm. Synch. Par contre dans comm. Asyn. Envoi non bloquant. Exp. RMI syn. Et MOM asyn.
3. ’’Message Queue’’ et ’’Topic’’ des MOMs? 🡪 Queue est PTP (1 seul producteur pour un seul consommateur) alors que topic ou publish/subscribe (1 éditeur pour plusieurs abonnés/souscripteurs).
4. JMS et JXTA? 🡪 JMS de MOM alors que JXTA, open plateforme pour développer des applications distribuées P2P
5. Un système P2P décentralisé et un P2P structuré? en donnez d’exemples de systèmes types correspondant à chaque cas ? 🡪 P2P décentralisé non structuré ou «Pur» (ex.Freenet, Gnutella), c-à-d complètement distribué: pas d’index global, le comportement global vient des interactions locales, etc. Alors que P2P structuré (C/S + P2P) comme Kazaa :
1. Complétez le tableau suivant par vos connaissances sur la messagerie MOM (vue en cours) et votre culture générale sur la messagerie email :
| | |
| --- | --- |
| MOM | email |
| MOM message | SMTP message |
| Message queue | Mail box |
| Producer | SMTP client |
| Publish/subscribe | Mailing list |
Exercice 2 : JAVA-RMI
1. Ecrire l’inteface java IRectangle, permettant de définir ces deux opérations sur Rectangle.
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface IRectangle extends Remote {
public int calculSurface(Rectangle rect)throws RemoteException;
public Rectangle decalerRectangle(Rectangle rect, int x, int y) throws RemoteException;
}
1. Comment doivent être les paramètres ou valeurs de retour afin de les transmettre via le réseau ? Ecrire alors la classe Rectangle, qui permet de décrire les coordonnées d’un rectangle.
- Les paramètres ou valeurs de retour doivent être sérialisables
public class Rectangle implements Serializable {
public int x1, x2, y1, y2;
public Rectangle(int x1, int y1, int x2, int y2){
this.x1 = x1;
this.y1 = y1;
Publicité
this.x2 = x2;
this.y2 = y2;
}
public String toString() {
return "("+x1+","+y1+")("+x2+","+y2+")"; }
}
1. Donnez la classe implémentant IRectangle, IRectangleImpl.java.
import java.rmi.UnicastRemoteObject;
public class IRectangleImpl extends UnicastremoteObject implements Irectangle {
public int calculSurface(Rectangle rect)
throws RemoteException {
return ((rect.x2-rect.x1)\*(rect.y2-rect.y1)); }
public Rectangle decalerRectangle(Rectangle rect,
int x, int y) throws RemoteException {
return new Rectangle(rect.x1 + x, rect.y1 + y,
rect.x2 + x, rect.y2 + y); }
public IRectangleImpl() throws RemoteException {
UnicastRemoteObject.exportObject(this); } }
1. Quelle est la commande permettant de générer les stubs afin d’appeler ces opérations à distance ?
$ rmic –v1.2 IRectangleImpl
1. Quelle est l’instruction qui demande le registry, tournant sur la machine ‘’ensi’’, de vous renvoyer la référence de l’objet, nommé ’’opRect’’.
IRectangle opRectangle = (IRectangle)Naming.lookup("rmi://ensi/opRect");
1. Une fois la référence obtenue, invoquez SurfaceRectangle de l’interface sur cet objet.
int surface = opRectangle.calculSurface(r1);
Exercice 4 : OMG-CORBA
1. Fichier de spécification de l’interface corba –IDL CORBA, Specif.idl
2. Indiquer les erreurs de syntaxe contenues dans le fichier suivant. Donner à chaque fois la règle qui n’est pas respectée.
module clientserveur {
string description(); //déclaration de la méthode doit //être à l’intérieure de interface
interface Cours {
string date(long seance ); //déclaration avec // in/out/inout
double moyenne( in sequence<float> notes );
// définir les types avant les interfaces
} // fin d’interface cours
interface TP {
Publicité
string responsable();
};
}; //erreur de fermeture d’accolade
};
1. En supposant qu'on utilise le compilateur idlj de la JDK pour faire la projection en Java, donnez la commande nécessaire au fichier de la question 2 pour générer le stub d'un client se trouvant sur une machine A. Citez tous les fichiers générés dans ce cas.
machineA> ls
Specif.idl
machineA> idlj -fall Specif.idl
machineA>ls
Specif.idl ServicesApp
machineA> ls ServicesApp
SpecifStub.java SpecifHolder.java
SpecifOperations.java
SpecifHelper.java SpecifPOA.java
machineA>
Nous constatons que pour chaque interface IDL, les fichiers suivants sont générés :
1. un fichier \_<InterfaceIDL>Stub qui représente le proxy
2. un fichier <InterfaceIDL>Helper qui contient les méthodes de lecture, d'écriture et de conversion
3. un fichier <InterfaceIDL>Operations qui définit les méthodes distantes à invoquer
4. un fichier <InterfaceIDL>Holder qui gère les paramètres out et inout.
5. un fichier <InterfaceIDL>POA qui est le squelette utilisé côté serveur
Exercice 4 : NFS (4,5 points— 2+2,5+1,5).
1. Supposons que 2 processus accèdent au même fichier F :
1. Qu’est-ce qu’Unix gère afin d’assurer la sémantique "une-copie" lorsque les deux processus sont sur la même machine ?
Unix gère les états d’un fichier: si un usager ouvre un fichier en lecture/écriture, alors tous les autres usages ne peuvent plus l’ouvrir qu’en lecture seule.
- 1. Supposons maintenant que ces processus soient sur deux machines différentes : comment est assurée la consistance du cache d’un client AFS, lors d’une opération d’écriture par l’un des processus clients ?
Lorsqu’un client modifie un fichier sur le serveur, le serveur envoie une notification à tous les autres clients pour leur dire que leur copie secondaire de ce fichier n’est plus valide et donc que ces clients devront récupérer la nouvelle version du fichier lorsqu’ils voudront y accéder.
1. En utilisant la figure ci-dessous, décrivez le fonctionnement du système de fichiers répartis GFS (Google FS) :
1. A quoi sert le chunk handle dans le GFS ? 🡪sert de descripteur, il contient toutes les métadonnées correspondant à la portion de fichier (chunk) , telles que la localisation,
2. Où sont sauvegardés les fichiers ? dire brièvement comment ? 🡪 chaque fichier du GFS est décomposé en portions appelés chunks, qui sont sauvegardés et répliqués, au moins 3 fois, dans les chunkservers, sous le contrôle d’accès du master server
3. Décrivez une opération de lecture ? 🡪 à partir de l’index accéder au GFS client, puis le master va fournir les chunkhandles, qui vont favoriser l’accès en lecture aux différents chunk du fichier