Syst`emes et Algorithmes Répartis - UTC

publicité
Systèmes et Algorithmes Répartis
Final de l’UV SR05 — Automne 2014 — vendredi 16 janvier 2015
Durée : 2h00. Aucun document autorisé.
Le barème est donné à titre indicatif.
Toutes les réponses doivent être argumentées. Les algorithmes fournis doivent impérativement être précédés d’une
explication sur leur fonctionnement. Leur simplicité sera appréciée.
Le soin apporté à la copie, la clarté et l’orthographe des explications seront pris en compte.
Problème 1 : (15 points)
On considère un système réparti S composé de N sites S1 , . . . , SN reliés par un réseau de topologie quelconque
mais fixe. Une fonction de routage (non détaillée ici) permet d’adresser un message depuis tout site Si vers tout autre
site Sj dans le réseau.
Ce système S est le support d’une application répartie A composée d’une instance Ai par site Si . Certaines
instances sont actives dès le départ. Lorsqu’une instance locale Ai est active, elle peut envoyer des messages à d’autres
instances Aj , ce qui les rend actives (si elles ne l’étaient pas déjà). Une instance passive ne peut devenir active
spontanément (sans réception de message). Par contre une instance active peut devenir spontanément passive (fin des
traitements locaux).
Pour détecter la terminaison de l’application répartie A, un protocole de contrôle P est inséré entre l’application
et le réseau. Sur chaque site Si , l’instance locale Pi de P est en mesure de déterminer si Ai est active et d’intercepter
les messages émis ou reçus par Ai .
Question 1-1 : (1 point)
Expliquer pourquoi le système S induit un anneau logique permettant de parcourir tous les sites successivement.
Question 1-2 : (2 points)
Proposer un algorithme utilisant cet anneau et des messages ne contenant qu’un entier pour élire un site
parmi ceux qui sont actifs. On complétera l’algorithme suivant. La fonction is active() retourne vrai si
l’instance locale de l’application Ai est active, faux sinon.
Algorithme 1 : Pi
Initialisation :
Élui ← +∞
Actifi ← is active()
Ai devient passif :
Actifi ← faux
Élui == +∞ et Actifi == vrai :
..
.
Réception d’un message de type “élection” :
..
.
Question 1-3 : (2 points)
Compléter l’algorithme précédent afin que chaque instance Pi du protocole de contrôle gère un tableau Vi
tel que Vi [k] représente le nombre de messages émis par Ai vers Ak et Vi [i] représente l’opposé du nombre de messages reçus par Ai . Attention, le protocole P doit maintenant réaliser une tâche dynamique.
On ajoutera les gardes suivantes à l’algorithme de Pi :
Réception d’un message de Ai pour Aj :
..
.
Réception d’un message de Pj pour Pi de type “appli” :
..
.
Question 1-4 : (2 points)
Compléter l’algorithme précédent en ajoutant un message de type “jeton”, qui part du site élu lorsqu’il
est passif et progresse sur l’anneau en étant retransmis par les sites passifs. Ce jeton contient un tableau
de N cases ; à chaque fois que le jeton quitte un site Si , il collecte dans son tableau le contenu du tableau
Vi , qui est ensuite réinitialisé.
Question 1-5 : (2 points)
Compléter l’algorithme précédent avec une détection de terminaison. Attention, le protocole P doit maintenant réaliser une tâche statique.
Question 1-6 : (2 points)
Montrer que lorsque l’application répartie est terminée, le jeton revient avec un tableau nul sur un site qui
l’avait déjà retransmis.
Question 1-7 : (2 points)
Montrer que lorsque le jeton avec un tableau nul sur un site qu’il avait déjà visité, alors l’application
répartie est terminée.
Question 1-8 : (2 points)
Compléter le schéma de la figure ci-dessous afin de rendre compte de l’exécution de l’algorithme de
détection de terminaison. On donnera en particulier les valeurs successives des tableaux dans le jeton et
sur les sites.
Consignes : Le jeton est émis au plus tôt, à date entière. Le site élu est S1 , qui émet le jeton la première
fois à la date 3. Le jeton met toujours une unité de temps pour atteindre le site suivant sur l’anneau.
Répondre directement sur le sujet.
Par précaution, écrire votre nom ici :
S1
S2
S3
S4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
activité de l’app. de base
message de l’app. de base
Problème 2 : Sauvegarde (5 points)
On désire ajouter une fonctionnalité de sauvegarde au sein d’une application répartie s’exécutant sur un réseau
fixe connexe FIFO.
Répondre directement sur le sujet.
Par précaution, écrire votre nom ici :
Question 2-1 : (0,5 point)
Expliquer pourquoi la sauvegarde répartie nécessite un algorithme d’instantané.
Question 2-2 : (1,5 point)
Compléter l’algorithme suivant pour réaliser un instantané réparti (snapshot).
Algorithme 2 : snapshot, site Si
Initialisation :
sauvegardei ← ∅
Début de l’instantané (sur un seul site) :
Réception d’un message de type marqueur :
Question 2-3 : (0,5 point)
Pourquoi l’algorithme précédent nécessite un réseau FIFO ?
Question 2-4 : (0,5 point)
On désire dater les sauvegardes. Pour cela, une horloge logique est utilisée pour dater les actions du
système. Quel type d’horloge utiliser ?
Question 2-5 : (1 point)
Préciser la relation d’ordre induite par l’horloge sur l’ensemble des actions du système. Est-ce une relation
d’ordre partielle ou totale ?
Question 2-6 : (1 point)
Comment dater une sauvegarde répartie à partir des dates des sauvegardes locales ?
Téléchargement