Nom et prénom : ……………………………………………….
1
Matière : Systèmes distribués
Date : Lundi 16 Janvier 2017
Informations générales :
1. Ajouter votre nom sur chaque page.
2. Utiliser l’espace vide pour vos réponses. Merci de ne pas ajouter de pages supplémentaires.
3. Matériel autorisé durant l’examen :
Tout document papier (livres, cours, notes)
Aucun appareil électronique
4. Il ne sera répondu à aucune question durant l’examen. En cas de doute ou d’incompréhension sur
la question, posez vos hypothèses ou reformulez la question avant de répondre.
5. Aucune communication orale durant l’examen.
6. Votre téléphone mobile doit être éteint.
7. Ne pas utiliser la couleur rouge qui est réservée à la correction.
8. Les parties biffées de vos réponses ne sont pas prises en compte ; même si elles sont justes.
9. Durée de l’examen limitée à 120 minutes.
Bonne chance !
Nom et prénom : ……………………………………………….
2
Partie 1 : Algorithmes distribués de base
Les questions 1 à 10 sont des QCMs. Pour une question donnée, plusieurs options peuvent être
correctes. Une réponse à une question est correcte si et seulement si toutes les options correctes sont
sélectionnées. Pour sélectionner une option, mettez une croix (X) à côté.
Chaque question est notée sur 1 point.
Question 1
Les algorithmes distribués de base vus en cours sont :
1. appelés par les applications utilisateurs (end users). Cet appel se fait via des API
2. exécutés aux niveau des nœuds du réseau pour maintenir à jour un état cohérent du
réseau
3. implémentés en utilisant des langages de haut niveau comme python et Java
4. implémentés en langage de bas niveau (assembleur) ou sous forme de circuits micro-
électronique.
Question 2
Les algorithmes distribués de base sont :
1. réactifs : réagissent à des réceptions de messages
2. exécutés seulement sur les nœuds internes du réseau
3. exécutés sur les nœuds internes et externes du réseau
Question 3
Dans les algorithmes distribués de base vus en cours :
1. les envois de messages sont bloquants, les réceptions sont non bloquantes
2. les envois de messages sont non bloquants, les réceptions sont bloquantes
3. les envois et les réceptions de messages sont bloquants
4. les envois et les réceptions de messages sont non bloquants
Question 4
Dans l’algorithme broadcast (diffusion) avec accusé de réception :
1. le dernier message envoyé par un nœud ni est différent du message diffusé.
2. le dernier message envoyé par un nœud ni est le même que celui diffusé.
3. le dernier message n’est envoyé par le nœud ni que lorsque le sous arbre de
recouvrement ayant comme racine ni, est déjà construit.
4. le dernier message envoyé par un nœud ni est considéré comme un accusé de
réception.
Question 5
1. Gnutella est basé sur un algorithme broadcast par vague sans accusé de réception
2. Gnutella est basé sur un algorithme broadcast par vague avec accusé de réception
3. Gnutella est basé sur un algorithme broadcast par vague sans accusé de réception,
mais le nombre de vagues générées par le nœud qui effectue la recherche est fixé par
la variable TTL
4. Gnutella est basé sur un algorithme broadcast par vague avec accusé de réception, mais le
nombre de vagues générées par le nœud qui effectue la recherche est fixé par la variable TTL
Nom et prénom : ……………………………………………….
3
Question 6
1. Les liens de voisinage dans un réseau Freenet est fixé par le contenu de l’entrepôt du
nœud en question.
2. Le contenu de l’entrepôt d’un nœud Freenet est fixé seulement par le propriétaire du nœud.
3. Le contenu de l’entrepôt est fixé par le propriétaire du nœud et les résultats des
requêtes de recherche.
4. L’algorithme de recherche Freenet est basé sur l’algorithme du calcul du plus court chemin.
5. Dans un réseau freenet, la relation de voisinage est symétrique.
Question 7
La condition d’arrêt de l’algorithme Test_Connectivity au niveau d’un nœud ni est :
1. le nombre de messages reçus par le nœud ni = |vi|
2. le nombre de messages reçus par le nœud ni = n * |vi|
3. le nombre de messages reçus par le nœud ni = |N0| * |vi|
4. toutes les cases du vecteur parenti sont différentes de NULL
5. toutes les cases du vecteur counti sont égales à |vi|
Rappel :
|vi| : cardinalité des voisins du nœud ni
|N0| : cardinalité de N0
La cardinalité d’un ensemble est le nombre d’éléments qui appartiennent à cet ensemble.
Question 8
La condition d’arrêt de l’algorithme de construction d’un arbre de recouvrement sans racine connue à
priori, au niveau d’un nœud ni non racine, est :
1. le nombre de messages reçus par le nœud ni = |NF| + |F| + 1
2. le nombre de messages reçus par un nœud ni = |NF| + |F|
3. le nœud reçoit un message spécial de la part du nœud racine.
4. le booléen terminé est à vrai
Question 9
La condition d’arrêt de l’algorithme de calcul du plus court chemin (version synchrone) est :
1. le nombre d’itérations effectués = n -1
2. aucune case du vecteur firsti (k) n’est égale à NULL
3. toutes les cases du vecteur disti (k) sont strictement inférieures à n
4. le nœud reçoit un message spécial de la part de tous ses voisins.
Question 10
Au niveau d’un nœud ni, l’algorithme convergecast (collecte de données) s’arrête lorsque:
1. le nœud ni envoie les messages reçus de la part de ses nœuds voisins.
2. le nœud ni envoie à son père des messages reçus de la part des nœuds fils.
3. le nœud ni reçoit de tous ses voisins les messages à collecter.
4. le nœud ni reçoit de tous ses fils les messages à collecter.
Nom et prénom : ……………………………………………….
4
Exercice 1 (5 points)
On suppose que l’algorithme Test_Connectivity est implémenté en utilisant les sockets. Quel est le
nombre de sockets maximum qui peuvent être ouverts en même temps (en parallèle) par un nœud du
réseau qui exécute cet algorithme ? Expliquez l’utilité des sockets utilisées. Sans explication, la
réponse est considérée comme fausse.
Chaque nœud i reçoit un message msgj de la part dun nœud voisin émetteur. Lorsque ce
message est reçu la première fois, le nœud i l’envoie à tous ses voisins sauf au nœud j. Ce
dernier ne reçoit de message du nœud i que lorsque i reçoit des messages de la part de tous
les voisins concernés par le premier envoi.
Dans lalgorithme Test_Connectivity, |N0| nœuds diffusent leurs messages. Le nombre de
messages qui peuvent donc être envoyés, en même temps par le nœud i est égal à : |N0| * (vi-1).
Comme serveur, un nœud doit aussi avoir une socket d’écoute.
Le nombre de sockets maximum qui pourraient être ouverts/utilisés par un nœud i du réseau
est donc égal à : |N0| * (vi-1) + 1
Cette réponse parait en contradiction avec le cours. Mais ce nest pas le cas. Dans le cours, il
est bien précisé que le traitement des messages reçus ne peut pas se faire en parallèle. Ici, le
serveur socket réagit aux messages. Cette réaction consiste à créer un processus fils ou un
thread qui soccupe du traitement du message. Le serveur socket soccupe de la réception du
reste des messages.
2 points : s’il y a explication du nombre de sockets maximum ouverts par un algorithme broadcast
avec accusé de réception
2 points : s’il y a explication que l’algorithme Test_Connectivity appelle |N0| fois l’algorithme broadcast
avec accusé de réception.
1 point : S’il y a explication de la socket découte.
Exercice 2 (5 points)
On suppose que l’algorithme de génération d’arbres de recouvrement sans racine a priori est
implémenté en utilisant les sockets. Quel est le nombre de sockets maximum qui peuvent être ouverts
en même temps (en parallèle) par un ud du réseau qui exécute cet algorithme ? Expliquez l’utilité
des sockets utilisées. Sans explication, la réponse est considérée comme fausse.
Suivre le même raisonnement que l’exercice précédent. Le nombre de sockets maximum
ouverts/utilisés par un ud du réseau est donc égal à 2 : une socket d’écoute et une socket
pour transmettre les demandes d’adoption Rappelons ici qu’un nœud envoie les demandes
d’adoption en séquentielle (arbre en profondeur d’abord).
4 points : s’il y a explication du nombre de sockets maximum ouverts par l’algorithme de génération
d’arbres de recouvrement sans racine a priori. La réponse doit bien préciser pourquoi ce nombre est
égal à 1.
1 point : S’il y a explication de la socket découte.
Nom et prénom : ……………………………………………….
5
Exercice 3 (10 points)
L’objectif de cet exercice est de faire la correspondance (matching) entre le canevas/template
(Algorithme 1) vu en cours et l’algorithme du calcul du plus court chemin (version synchrone.
Algorithme 2). Précisez pour chaque ligne du canevas, le bloc de code sources correspondant dans
l’algorithme 2.
Au besoin, utilisez le verso de la feuille.
Algorithme 1 : Canevas/Template des algorithmes distribués
Algorithme 2 : Algorithme du plus court chemin (version synchrone)
2 points : faire la correspondance entre les deux premières lignes du template et les deux
premières lignes de lalgorithme.
2 points : La boucle extérieure, avec la condition darrêt. Si la condition darrêt est fausse, ces
deux points ne seront pas comptés.
2 points : A la réception dun message et le traitement qui lui est associé
2 points : préciser la condition booléenne associée à un canal de communication
2 points : préciser le traitement et les envois de messages effectués suite à la réception dun
msg sur un canal
1 / 10 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !