5-final03 Fichier - UTC

publicité
NOM :
1
PRÉNOM :
Université de Technologie de Compiègne
✭✭Systèmes et Algorithmes Répartis✮✮
Final de l’UV SR05 — mardi 20 janvier 2004
Durée : 2h
Seul le polycopié de cours est autorisé (pas de notes manuscrites, de livres, de TD, etc.).
Toutes les réponses doivent être argumentées.
La simplicité des algorithmes sera appréciée.
Si l’énoncé était imprécis (et seulement dans ce cas-là), faire une hypothèse, l’écrire sur la copie et continuer en
l’admettant.
- Le barème est donné à titre indicatif.
- Répondre directement sur la copie.
- Écrire votre nom et prénom sur chacune des feuilles.
-
Problème 1 : (9,5 points)
On considère un système réparti composé de N sites S1 . . . SN , et reliés par des liens de communication
full-duplex formant un réseau quelconque. Chaque site connaı̂t le nombre de ses voisins dans le réseau. L’ensemble est modélisé par un graphe orienté symétrique.
Question 1-1 : (1,5 point)
Écrire un algorithme qui construit une arborescence de diffusion enracinée sur le site S1 en maintenant, sur chaque site, une variable parent qui indique le voisin parent dans l’arborescence.
Question 1-2 : (1,5 point)
Modifier l’algorithme précédent pour que chaque site connaisse sa hauteur dans l’arborescence.
Question 1-3 : (1,5 point)
Modifier l’algorithme précédent afin que l’initiateur soit averti après que chaque site ait obtenu sa
hauteur.
Question 1-4 : (0,5 point)
À quelle condition sur les communications dans le réseau la hauteur d’un site Si dans l’arbre est
égale à la distance de S1 à Si dans le réseau ?
Question 1-5 : (1,5 point)
Modifier l’algorithme de la question 1-3 pour que la demi-vague arrête son exploration et remonte
vers l’initiateur si l’arbre atteint une hauteur de k, qui est une constante fixée par l’initiateur.
Question 1-6 : (1,5 point)
Modifier l’algorithme précédent pour que chaque site connaisse le maximum des hauteurs de ses
fils (lui compris) dans l’arborescence.
Question 1-7 : (1,5 point)
Utiliser l’algorithme précédent pour construire un algorithme silencieux qui calcule la distance de
chaque site à l’initiateur dans le réseau, et qui prévient l’initiateur quand il est terminé (terminaison
explicite).
Problème 2 : (10,5 points)
On considère un système réparti composé de N sites S1 . . . SN , dans lequel chaque site Si exécute une
instance locale Appi de l’application répartie App. Dans le cadre de cette application, les sites se partagent des
Université de Technologie de Compiègne. Final SR05 automne 2003.
resp. : B. Ducourthial
2
ressources à accès exclusif. L’exclusion mutuelle est gérée par un algorithme de contrôle réparti Ctl, constitué
d’une instance Ctli sur chaque site Si .
L’algorithme Ctli doit répondre aux requêtes de demande de section critique (DemSC) et de fin de section
critique (FinSC) émises par l’algorithme Appi . S’il possède le privilège, alors l’algorithme Ctli répond au
message DemSC émis par Appi par un message d’accord (AccSC). Dans le cas contraire, il envoie une demande
DemPriv vers chacune des autres instances Ctlj (j 6= i) de l’algorithme de contrôle.
L’algorithme Ctli gère deux booléens : Privi (détention du privilège) et SCi (section critique en cours). Le
booléen Privi est initialisé via un processus d’élection, qui ne donne le privilège qu’à un seul site : Priv ←
élection().
Question 2-1 : (1,5 point)
Écrire l’algorithme de contrôle Ctli . Lorsqu’il reçoit un message DemPriv émis par Ctlj , Ctli lui
transmet le privilège (avec un message de type DonPriv) s’il le possède et s’il n’y a pas de section
critique en cours. Dans le cas contraire, il laisse sans suite la demande de Ctlj .
L’algorithme comporte les gardes suivantes : initialisation, réception demande de section critique,
réception fin de section critique, réception demande privilège, réception du privilège.
Question 2-2 : (1 point)
Quel est l’inconvénient d’ignorer les demandes de privilège lorsqu’une section critique est en
cours ? Comment y remédier ? Pourquoi utilise-t-on alors les estampilles ?
Question 2-3 : (1,5 point)
Modifier l’algorithme de la question 2-1 de telle sorte qu’à la fin de la section critique, le privilège
soit transmis au demandeur ayant adressé la plus ancienne demande. On notera hi l’horloge entière
locale, et demandesi la liste des estampilles des demandes reçues pendant la section critique (et
uniquement celles-ci).
Question 2-4 : (1,5 point)
(a) Avec l’algorithme précédent, pourquoi un site pourrait transmettre le privilège à un site qui l’a
demandé et qui a été servi depuis ?
(b) Expliquer comment ce problème peut être résolu en utilisant un tableau TabPriv[1..N ] de N
estampilles en guise de privilège (au lieu du booléen Priv), et en notant dans TabPriv[j] l’estampille
du site Sj au moment où celui-ci donne le privilège (i.e., il envoie TabPriv à l’émetteur de la plus
ancienne demande).
Question 2-5 : (1,5 point)
Lorsque le privilège est sur le site Si , le tableau d’estampilles TabPriv est stocké dans la variable
TabPrivi .
(a) Pourquoi peut-on utiliser un tableau TabDemi [1..N ] d’entiers pour stocker les estampilles des
demandes reçues pendant la section critique au lieu de la liste d’estampilles demandei ?
(b) En utilisant TabDemi et TabPrivi , comment le site qui détient le jeton peut équitablement
déterminer le demandeur à satisfaire ?
(c) Dans quel cas le privilège ne doit pas être transmis ?
Question 2-6 : (1,5 point)
Donner le code d’une procédure ChoixDem qui prend en argument les tableaux TabDemi et
TabPrivi , qui les compare, et qui retourne l’indice du site à qui le privilège doit être transmis
(0 si le privilège ne doit pas être transmis) : k ← ChoixDem(TabDemi , TabPrevi ).
Question 2-7 : (2 points)
Modifier l’algorithme de la question 2-3 en utilisant les tableaux TabDemi et TabPrivi , et la
procédure ChoixDem(), afin d’obtenir un algorithme d’exclusion mutuelle. Cet algorithme fonctionne par transmission d’un privilège, mais ne nécessite pas l’établissement d’un anneau de contrôle.
Université de Technologie de Compiègne. Final SR05 automne 2003.
resp. : B. Ducourthial
Téléchargement