Upload
truonghuong
View
216
Download
4
Embed Size (px)
Citation preview
P1
P3
P4
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) :
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)
P2
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.javaimport 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.javaimport 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)