Table des matières

Election (1/2)

I) Proposer un algorithme d'élection dans les cas suivants :

  1. Election sur un anneau unidirectionnel
  2. Election sur un arbre couvrant

Solution #1

D'abord, comprenons ce que c'est qu'un anneau unidirectionnel : chaque machine à un, et un seul destinataire (dit “successeur”) pour ses messages, et une seule source. Cependant, l'anneau ne suit pas nécessairement une numérotation des machines, ni même des connections physiques (tant qu'il existe un chemin physique pour réaliser chaque lien).

Chaque machine peut être vue comme divisée en trois parties :

Calcul processus
de calcul
pour
son appli.
démons:
election
excl.mut
etc.
Contrôle
opérations locales
“natif”

Remarque : au fur et à mesure que les services tels que “élection” et “exclusivité mutuelle” se standardisent, ils peuvent migrer de la partie “contrôle” de chaque application que s'en sert à la partie “natif”–opérations locales.

Eléction :

Notre réponse doit préciser

Prémisses

  1. GC 1) unidirectionnel FIFO
  2. P_{i_0} est le site initiateur
Principe
  1. le site initiateur envoie un jeton avec un message (“élection”), son identifiant, sa capacité, et l'identifiant de la machine qui a cette capacité (elle-même).
  2. chaque machine change ces deux derniers éléments si sa capacité est supérieur, et transmet le jeton à son successeur.
  3. quand le jeton revient au point de départ, on a la réponse (et on réalise une Proclamation)

Dans ce cas, nous parlons de protocole, car c'est un ensemble de traitements d'évènements : initialisation, réception, proclamation, fin.

Protocole

Coût en messages
Premier tour (sondage) n
2° tour (proclamation) n
Total 2N
Evènements Imprévus

Une alternative

Tanenbaum et Van Steen propose un algorithme qui est basé sur l'envoi de messages, pas un jeton.

Hypothèses

Principe

Remarques


Election sur un arbre couvrant

Remarques Préalables

Il est coutume de distinguer trois “solutions” à ce problème:

Topologiquement, si l'on oublie les notions de parent et fils et les remplace (initialement) par la notion fusionnelle voisins, tout processus peut être vu comme la racine d'une élection qu'il initie. Après, le processus duquel chaque processus reçoit le message ELECTION est logiquement son parent vis-àvis de ce scrutin, et ses autres voisins sont logiquement ses fils pour ce scrutin. Mais puisqu'il peut être difficile d'exprimer le protocole en ces termes inhabituels, on explicitera chaque fois “s'il recoit de son parent…s'il recoit d'un fils, il fait pour tous les autre fils mais pas le fils source…etc”

Prémisses
Principes

Protocole

Initialisation
  1. P_{i_0} transmet le jetonmessage [ "election";c_{i_0},i_0; i_0 ] à tous ses voisins, tout en créant une liste de ceux-ci pour pouvoir pointer les remontées.
Reception

Lorsque P_j reçoit un jetonmessage [ "election";c_{i},i; \underbrace{i_0,...}_{pile} ]:

Coût en messages

Bonne question : à prime abord, 2(n-1) rien que pour le sondage (premier tour), car une étoile est un arbre couvrant et il faudrait un message vers puis un message de chaque satellite (n-1).

Traitement en Classe

En cours, nous avons ensuite traité ce problème en deux temps: d'abord en supposant que l'initiateur (P_{i_0}) est la racine, puis en apportant des modifications pour passer au cas général.

Hypothèses

Principe

Pseudo-code

Version "Tout Noeud"

Remarques

Les principales différences entre “la” solution et ma proposition sont:

1) graphe de communication
2) s'il est la racine, à ses fils; s'il est feuille, à sont parent; autrement, au deux