cc1_2015_rsd - WordPress.com

publicité
M1 RSD : Algorithmique des systèmes et applications réparties
Contrôle continu 1 - Durée : 1 heure 30 min
Partie I : Horloges logiques (8 pts)
Soit le chronogramme suivant (le petit carré représente en événement local au processus) :
P1
P2
P3
P4
1. Numérotez les événements sur le chronogramme (1 pt).
2. Datez chacun des événements en utilisant la méthode de l’horloge de Lamport (1 pt).
3. Donnez l’ordre total global défini par la datation via la méthode de l’horloge de Lamport (1 pt).
4. Datez chacun des événements en utilisant la méthode de l’horloge de Mattern. (1 pt)
5. Selon Mattern, quelle est la relation entre e12 et e25 ? (1 pt)
6. Selon Mattern, quelle est la relation entre e23 et e33 ? (1 pt)
7. Datez la coupure à l’aide de l’horloge de Mattern. (1 pt)
8. La coupure est elle cohérente ? (1 pt)
Partie II : Généralité sur les systèmes distribués (6 pts)
1. Citez (sans détailler) 4 modèles d’exécution pour le client/serveur. (1 pt)
2. Complétez la phrase suivante : Je peux construire un détecteur de pannes parfait dans un modèle
synchrone si ………………... (1 pt)
3. Quel est le type de la faute suivante : un message est placé dans le tampon de réception d’un
processus mais le processus ne le reçoit pas. (1 pt)
4. Quelle est la relation entre le langage IDL et CORBA ? (1 pt)
5. Donnez un exemple d’application qui est sensible à la gigue. (1 pt)
6. Donnez un exemple dans lequel un système distribué passe d’une exactitude faible à une
exactitude finalement forte. (1 pt)
Partie III : Sockets TCP (6 pts)
1. Pour communiquer une chaîne de caractères entre un client et un serveur en utilisant les sockets
TCP, le client peut utiliser la méthode println de PrintWriter et le serveur peut utiliser la méthode
readLine() de BufferedReader. Donnez deux manières différentes pour réaliser le même
traitement (en utilisant d’autres flots ou d’autres méthodes) (2 pts)
2. Que fait la méthode mystere de la classe java suivante ? (1 pt).
import java.io.*;
public class A
{
public static void mystere (InputStream in, OutputStream out) throws IOException {
byte buf[] = new byte[1024]; int n;
while((n=in.read(buf))!=-1) out.write(buf,0,n); in.close(); out.close();
}
}
3. Soit les deux classes java suivantes :
//// Serveur.java
import java.io.*;
import java.net.*;
public class Serveur
{
public static void main(String []args) throws IOException
{
Socket sock = new ServerSocket(9001).accept();
A.mystere(sock.getInputStream(),new FileOutputStream("./src/test2"));
sock.close();
}
}
/////////// Client.java
import java.io.*;
import java.net.*;
public class Client
{
public static void main(String []args) throws IOException
{
Socket sock = new Socket(InetAddress.getLocalHost(),9001);
A.mystere(new FileInputStream("./src/test1"),sock.getOutputStream());
sock.close();
}
}
a. Que fait le client ? (0,5 pt).
b. Que fait le serveur ? (0,5 pt).
c. Que fait cette application en exécutant les deux classes dans localhost ? (1pt)
d. En utilisant deux machines différentes (une machine coté client et une autre machine
coté serveur), quel sera l’objectif de cette application ? (1pt)
Téléchargement