Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf ·...

156
Algorithmique Distribuée Stéphane Devismes

Transcript of Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf ·...

Page 1: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithmique  Distribuée  

Stéphane  Devismes  

Page 2: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Infos  pra9ques  

•  Contact  :  [email protected]  

•  Web  :  www-­‐verimag.imag.fr/~devismes/WWW/enseignements.html  

•  Contact  promo  :  Ricm5-­‐[email protected]    

•  Salles  de  Cours/TD/TP,  voir  planning  sur  ADE  :  ade6-­‐ujf-­‐ro.grenet.fr/direct/  

2  Algorithmique  Distribuée  

Page 3: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

But  •  Algorithmes  distribués  :  

–  Spécifica9on  –  Concep9on  –  Preuve  de  correc9on  et  complexité  –  Implanta9on  

•  Dans  le  simulateur  Sinalgo  •  Source  (plug-­‐in  Java),  Tutorial  et  supports  disponibles  sur  ma  page  Web  

•  Problèmes  considérés  :  briques  de  bases  pour  les  réseaux    –  élec9on,  circula9on  de  jeton,  diffusion,  etc.  

•  Intérêt  et  inconvénient  :  Indépendant  de  l’architecture  matérielle    

3  Algorithmique  Distribuée  

Page 4: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Contenu  

•  8  semaines,  26  heures  •  Alternance  Cours-­‐TD  /  TP  •  Suite  du  cours  «  Algorithmique  Distribuée  »  de  RICM4  

•  Aspect  «  tolérance  aux  fautes  »  

4  Algorithmique  Distribuée  

Page 5: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Plan  du  cours  

•  Rappel  «  Algorithmique  non  tolérante  aux  fautes  »    –  2  heures  

•  Introduc9on  à  la  tolérance  aux  fautes  +  bit  alterné    –  3  heures  

•  Consensus,  impossibilité  (FLP)  et  algorithmes    –  10  heures  

•  Auto-­‐stabilisa9on    –  11  heures  

5  Algorithmique  Distribuée  

Page 6: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Evalua9on  

•  Examen  •  2h  •  Fin  décembre  ?  •  Annales  disponibles  sur  ma  page  Web  

6  Algorithmique  Distribuée  

Page 7: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Introduc9on  

7  Algorithmique  Distribuée  

Page 8: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithmes  distribués  

8  Algorithmique  Distribuée  

Page 9: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithmes  distribués  

•  Algorithmes  pour  des  systèmes  distribués  J  

•  «  En  informa9que,  un  système  distribué  (aussi  appelé   système   répar9)   est   un   ensemble  d ’un i t é s   de   t r a i t ement   au tonomes  interconnectées  entre-­‐elles.  »  – Gérard  Tel,  Introduc=on  to  distributed  algorithms  

9  Algorithmique  Distribuée  

Page 10: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithmes  distribués  

•  Système  distribué  ≃  modélisa9on  des  réseaux  –  Internet  – Le  réseau  de  l’Université  – Le  réseau  téléphonique  (filaire,  cellulaire)  – GPS  – Réseau  de  capteurs  (surveillance  sismique)  – Threads  sur  une  machine  –  ...  

10  Algorithmique  Distribuée  

Page 11: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithmes  distribués  

•  Unités  de  traitement  =  processus  =  processeurs  =  nœuds  

11  Algorithmique  Distribuée  

Page 12: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithmes  distribués  •  Autonome  :  – Chaque  machine  est  pourvue  de  son  propre  contrôle  •  Programmes  locaux  •  Mémoires  locales    

12  Algorithmique  Distribuée  

Page 13: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithmes  distribués  

•  Autonome  :  –  ≠  algorithmes  parallèles  :  pas  de  synchronisa9on  (logicielle  ou  matérielle)  •  Asynchrone  •  Pas  de  temps  global  

13  Algorithmique  Distribuée  

Page 14: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithmes  distribués  

•  Interconnectées  :  échanges  d’informa9ons      

14  Algorithmique  Distribuée  

Page 15: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithmes  distribués  

•  Interconnectées    

15  Algorithmique  Distribuée  

Page 16: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithmes  distribués  

•  Interconnectées  :  échanges  d’informa9ons    – via  messages  

16  Algorithmique  Distribuée  

Page 17: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithmes  distribués  •  Interconnectées  :  échanges  d’informa9ons    – Couches  de  communica9on  (Modèle  OSI)  

17  

Applica>on  Présenta>on  

Session  Transport  Réseau  MAC  

Physique   Envoi  d’un  seul  bit  d’informa9on  point  à  point    

Envoi  d’une  trame  de    bits  (message)  point  à  point  

Protocoles  réseaux  :  Algorithmes  distribués  

Deux  fonc9ons  :    -­‐  Envoyer(M,v)  -­‐  Recevoir(M,v)  

U9lisateur  final  

Algorithmique  Distribuée  

Page 18: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Centralisé  vs.  Distribué  

18  Algorithmique  Distribuée  

Page 19: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Centralisé  vs.  Distribué  •  Absence  de  connaissance  globale  – Pas  d’accès  à  l’état  global  du  système  – Décisions  basées  la  mémoire  locale  du  nœud    

•  Mise  à  jour  en  fonc9on  des  échanges  d’informa9ons  •  Problème  de  pérennité  des  informa9ons  (système  asynchrone)  

19  

Racine=    faux  

Algorithmique  Distribuée  

Page 20: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Centralisé  vs.  Distribué  

•  Absence  de  temps  global:  – Temps  d’exécu9on  des  nœuds  ≠  – Communica9ons  asynchrones  – Horloges  locales  ≠  (valeurs  ini9ales  ≠  +  dérive)  – Conséquence  :  contrairement  aux  systèmes  centralisés,  l’ordre  (observable  par  les  processus)  entre  les  ac9ons  des  processus  n’est  que  par9el  :  l’ordre  de  causalité    •  (Lamport  1978)      

20  Algorithmique  Distribuée  

Page 21: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Causalité  :  exemple  

21  Algorithmique  Distribuée  

•  L’événement  «  p  envoie  m  »  arrive  avant  l’événement  «  q  reçoie  m  »    

p  

q  

m  

Page 22: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Causalité  :  exemple  

22  Algorithmique  Distribuée  

•  L’événement  «  p  envoie  m  »  arrive  avant  l’événement  «  p  effectue  le  calcul  interne  c  »    

p  

q  

m  

c  

Page 23: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Causalité  :  exemple  

23  Algorithmique  Distribuée  

•  Les  événements  «  p  envoie  m  »  et  «  q  envoie  m’  »  sont  indépendants    

p  

q  

m   m’  

Page 24: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Centralisé  vs.  Distribué  

•  Non-­‐déterminisme  – Algorithme  déterministe  séquen9el  :  sor9es  fonc9on  des  entrées    

– Algorithme  déterministe  distribué  :  pour  les  mêmes  entrées,  plusieurs  résultats  peuvent  être  possible          

24  Algorithmique  Distribuée  

Page 25: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

1   2  

Sor9e  =  premier  message  reçu  –  deuxième  message  reçu    Résultat  ?  

25  Algorithmique  Distribuée  

Page 26: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Caractéris9ques  d’un  système  distribué    

•  Sa  topologie  •  Ses  liens  de  communica9ons  •  Ses  processus  •  Le  temps  •  Les  connaissances  ini9ales  des  processus  sur  le  système  

Algorithmique  Distribuée   26  

Page 27: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Caractéris9ques  d’un  système  distribué  :  sa  topologie  

27  Algorithmique  Distribuée  

Page 28: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Caractéris9ques  

•  Topologie  =  réseaux  d’interconnexion    •  Topologies  ≈  Graphe  (simple)  G=(V,E)    – 2  processus  qui  peuvent  communiquer  directement  =  voisin  

– Communica9ons  :    •  bidirec9onnelles  (ex.,  réseaux  filaires)  ou    •  unidirec9onnelles  (ex.,  réseaux  à  fibres  op9ques)  

– Généralement  on  supposera  des  communica9ons    bidirec9onnelles  et  une  topologie  connexe    

28  Algorithmique  Distribuée  

Page 29: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Les  systèmes  distribués  

•  Hypothèses  – Liens  bidirec9onnels  

Algorithmique  Distribuée   29  

Page 30: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Liens  bidirec9onnels  :  pas  toujours  !  

Algorithmique  Distribuée   30  

Page 31: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Rappel  :  Connexité  

Connexe  !  

Algorithmique  Distribuée   31  

Page 32: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Rappel  :  Connexité  

Pas  connexe  !  

Algorithmique  Distribuée   32  

Page 33: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemples  de  topologies    

anneau arbre étoile clique

33  Algorithmique  Distribuée  

Page 34: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Caractéris9ques  d’un  système  distribué  :  liens  de  communica9ons  

34  Algorithmique  Distribuée  

Page 35: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Communica9ons  

•  Par  message  (modèle  à  passage  de  messages)  –  Fiabilité  du  canal  

•  (fiable  ou  avec  perte  équitable  ou  taux  de  livraison  ou  dynamique)  •  Fiable  =  pas  de  perte,  duplica9on,  créa9on  

–  Ordre  d’arrivée  des  messages    •  (FIFO  ou  non)  

–  Capacité  des  canaux    •  (borné  ou  pas,  borne  connue  ou  pas)  

–  Temps  d’acheminement  (toujours  fini)    •  (synchrone,  asynchrone,  finalement  synchrone)  •  (pour  les  deux  derniers,  borne  connue  ou  pas)  

–  Temps  de  traitement  (supposé)  négligeable  

35  Algorithmique  Distribuée  

Page 36: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

FIFO  :  Rappel  

Algorithmique  Distribuée   36  

Page 37: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

FIFO  :  Rappel  

Algorithmique  Distribuée  

A  

37  

Page 38: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

FIFO  :  Rappel  

Algorithmique  Distribuée  

B   A  

38  

Page 39: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

FIFO  :  Rappel  

Algorithmique  Distribuée  

C   B   A  

39  

Page 40: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

FIFO  :  Rappel  

Algorithmique  Distribuée  

A  C   B  

40  

Page 41: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

FIFO  :  Rappel  

Algorithmique  Distribuée  

B  C  

41  

Page 42: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

FIFO  :  Rappel  

Algorithmique  Distribuée  

C  

42  

Page 43: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Temps  d’acheminement  

1.  Un  canal  est  synchrone  s’il  existe  une  constante  c  telle  que   pour   tout   temps   t,   si   un   message   est   émis   au  temps  t  alors  il  est  reçu  avant  le  temps  t  +  c  ou  perdu.  

2.  Un  canal  est  finalement  synchrone  s’il  existe  un  temps  t  et  une  constante  c  telle  que  pour  tout  temps  t’  ≥  t,  si  un   message   est   émis   au   temps   t’   alors   il   est   reçu  avant  le  temps  t’  +  c  ou  perdu.  

3.  Un  canal  est  asynchrone  s’il  n’existe  pas  de  temps  t  et  de  constante  c  telle  que  pour  tout  temps  t’  ≥  t,  si  un  message  est  émis  au  temps  t’  alors  il  est  reçu  avant  le  temps  t’  +  c  ou  perdu.        

43  Algorithmique  Distribuée  

Page 44: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Caractéris9ques  d’un  système  distribué  :  les  processus  

44  Algorithmique  Distribuée  

Page 45: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Caractéris9ques  

•  Processus  –  Ini=ateur  (démarrage  «  spontané  »)  ou  non-­‐ini=ateur  (aussi  appelé  suiveur,  démarrage  suite  à  une  communica9on  avec  un  voisin)  

– Sujet  ou  pas  aux  pannes  ?  (et  quel  type  ?)  – Asynchrone  (équitable),  synchrone  ou  finalement  synchrone  

– Mémoire  locale  de  taille  bornée  ou  non  ?  

45  Algorithmique  Distribuée  

Page 46: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Caractéris9ques  d’un  système  distribué  :  le  temps  

46  Algorithmique  Distribuée  

Page 47: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Caractéris9ques  

•  Temps  (global)  – Discret  :  temps  0,  1,  2  …  – Non  accessible  aux  processus  mais  u9lisé  dans  les  preuves  

– Cependant,  on  u9lisera  parfois  du  temps  local  (minuteurs)  

47  Algorithmique  Distribuée  

Page 48: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Caractéris9ques  d’un  système  distribué  :  connaissances  ini9ales  des  

processus  

48  Algorithmique  Distribuée  

Page 49: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Caractéris9ques  •  Connaissances  ini>ales  (entrées)  des  processus  –  Propriétés  globales  :  

•  Topologique  :  –  Topologie,  e.g.,  je  sais  que  je  suis  dans  un  arbre      –  Borne  supérieure  ou  exacte  sur    

»  Le  nombre  de  processus  (n)  »  Le  degré  maximum  (Δ)  »  Le  diamètre  du  réseau  (D)  

•  Dis9nc9on  entre  les  processus  –  Anonyme  –  Iden9fié  –  Semi-­‐anonyme  

»  Enraciné  

49  Algorithmique  Distribuée  

Page 50: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Réseaux  iden9fiés  :  Rappel  

•  Iden9té  unique    (e.g.,  adresse    IP)  

Algorithmique  Distribuée  

12  

4078  

42  

167  

23  50  

Page 51: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Réseaux  enracinés  :  Rappel  

51  Algorithmique  Distribuée  

Page 52: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Réseaux  enracinés  :  Rappel  

52  

Racine=    faux  Racine=    vrai  

Racine=    faux  

Racine=    faux  Racine=    faux  

Algorithmique  Distribuée  

Page 53: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Caractéris9ques  

•  Connaissances  ini>ales  des  processus  – Propriétés  locales  :  connaissance  sur  le  voisinage    

•  Degré  local  ?  •  Iden9té  des  voisins  ?  •  Numéro  de  canaux  (é9quetage  local)  ?  •  Rien  ?  (ex.  réseaux  sans  fils)    

53  Algorithmique  Distribuée  

Page 54: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Numérota9on  des  canaux  

1

1

1

1

1

1

1

2

2

2

2

2

2

2

3

3

3

3

3

3

4

4

54  Algorithmique  Distribuée  

Page 55: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  récapitula9f  

55  Algorithmique  Distribuée  

Page 56: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithme  Distribué  Exemple  :  Calcul  d’un  arbre  couvrant  

Algorithmique  Distribuée   56  

Page 57: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithme  Distribué  Exemple  :  Calcul  d’un  arbre  couvrant  

Algorithmique  Distribuée   57  

Page 58: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithme  Distribué  Exemple  :  Calcul  d’un  arbre  couvrant  

Algorithmique  Distribuée   58  

Page 59: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

•  Entrées  répar9es  

Algorithme  Distribué  Exemple  :  Calcul  d’un  arbre  couvrant  

Algorithmique  Distribuée  

Racine=    faux  Racine=    vrai  

Racine=    faux  

Racine=    faux  Racine=    faux  

59  

Page 60: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

•  Entrées  répar9es  •  Calculs  locaux  – Mémoires  locales  – Programmes  locals  – Envoi  de  messages  – Décision  locale  

Algorithme  Distribué  Exemple  :  Calcul  d’un  arbre  couvrant  

Algorithmique  Distribuée  

Racine=    faux  

60  

Page 61: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

•  Entrées  répar9es  •  Calculs  locaux  – Mémoires  locales  – Programmes  locals  – Envoi  de  messages  – Decision  locale  

•  Sor9es  répar9es  

Algorithme  Distribué  Exemple  :  Calcul  d’un  arbre  couvrant  

Algorithmique  Distribuée  

Racine=    faux  Racine=    vrai  

Racine=    faux  

Racine=    faux  Racine=    faux  

61  

Page 62: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithme  Distribué  Exemple  :  Calcul  d’un  arbre  couvrant  

•  Entrées  répar9es  •  Calculs  locaux  – Mémoires  locales  – Programmes  locals  – Envoi  de  messages  – Decision  locale  

•  Sor9es  répar9es  •  Tâche  globale  

Algorithmique  Distribuée  

Racine=    faux  Racine=    vrai  

Racine=    faux  

Racine=    faux  Racine=    faux  

62  

Page 63: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Analyse  de  complexité  

63  Algorithmique  Distribuée  

Page 64: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Complexité  

•  Pire  des  cas,  cas  moyen,  meilleur  des  cas  

•  Exact  ou  asympto9que  (nota9on  de  Landau)  

•  Calcul  interne  négligeable  

64  Algorithmique  Distribuée  

Page 65: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Mesures  de  complexité  

•  Complexité  en  messages  

•  Complexité  en  volume  

•  Complexité  en  temps  –  Temps  de  traitement  =  0,  temps    d’acheminement  =  1  

•  Complexité  en  espace  (bits  ou  états)    

65  Algorithmique  Distribuée  

Page 66: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Problèmes  classiques  

66  Algorithmique  Distribuée  

Page 67: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Problèmes  classiques  

•  Echange  de  donnée  :  routage,  diffusion,  …  •  Accords  :  consensus,  élec9on,  …  

•  Auto-­‐organisa>on  :  arbre  couvrant,    clustering  

•  Alloca>on  de  ressources  :  exclusion  mutuelle,  diner  des  philosophes…  

Algorithmique  Distribuée   67  

Page 68: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Echange  de  donnée  :  routage  

Algorithmique  Distribuée   68  

Page 69: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Echange  de  donnée  :  routage  

Algorithmique  Distribuée  

Source  

Des>na>on  

69  

Page 70: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Echange  de  donnée  :  routage  

Algorithmique  Distribuée   70  

Page 71: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Accord  :  élec9on  Calculer  un  chef  !    

(avec  publica9on  ou  non)  

Algorithmique  Distribuée   71  

Page 72: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Accord  :  élec9on  Calculer  un  chef  !  

Algorithmique  Distribuée  

42  

22  

34  

58  56  

72  31  

15  

12  

72  

Page 73: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Accord  :  élec9on  Calculer  un  chef  !  

Algorithmique  Distribuée  

42  

22  

34  

58  56  

72  31  

15  

12  

73  

Page 74: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Accord  :  élec9on  Calculer  un  chef  !  (avec  publica9on)  

Algorithmique  Distribuée  

42  

22  

34  

58  56  

72  31  

15  

12  12    

12    

12     12    

12    

12    12    

12    12    

74  

Page 75: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Auto-­‐organisa>on  :  k-­‐Clustering  

Algorithmique  Distribuée   75  

Page 76: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Auto-­‐organisa>on  :  k-­‐Clustering  

Algorithmique  Distribuée   76  

Page 77: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Auto-­‐organisa>on  :  k-­‐Clustering  

•  Ex.  k=2  

Algorithmique  Distribuée  

≤k  

77  

Page 78: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Auto-­‐organisa>on  :  k-­‐Clustering  

•  Ex.  k=2  

Algorithmique  Distribuée  

≤k  

78  

Page 79: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Alloca>on  de  ressources  :  exclusion  mutuelle  

Algorithmique  Distribuée   79  

Page 80: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Alloca>on  de  ressources  :  exclusion  mutuelle  

Algorithmique  Distribuée   80  

Page 81: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Alloca>on  de  ressources  :  exclusion  mutuelle  

Algorithmique  Distribuée   81  

Page 82: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Alloca>on  de  ressources  :  exclusion  mutuelle  

Algorithmique  Distribuée   82  

Page 83: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Alloca>on  de  ressources  :  exclusion  mutuelle  

Algorithmique  Distribuée   83  

Page 84: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  trivial  :    Exclusion  mutuelle  de  Le  Lann  

 

84  Algorithmique  Distribuée  

Page 85: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Méthodologie  

1.  Spécifier  le  problème  à  résoudre  2.  Fixer  les  hypothèses  sur  le  système  3.  Ecrire  un  algorithme  4.  Prouver  que  l’algorithme  vérifie  la  

spécifica9on  sous  les  hypothèses  fixées  5.  Etudier  la  complexité  6.  Implanter  l’algorithme    

85  Algorithmique  Distribuée  

Page 86: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Spécifica9on  •  Enoncé  formel  du  problème  que  l’algorithme  doit  résoudre  

•  Sûreté  (Safety)  +  Vivacité  (Liveness)  –  Sûreté  :  l’ensemble  des  propriétés  qui  doivent  être  vérifiées  à  chaque  instant  de  l’exécu9on  de  l’algorithme.  «  Rien  de  mal  ne  doit  arriver.  »  

– Vivacité  :  L’ensemble  des  propriétés  qui  doivent  être  vérifiées  à  certains  instants  de  l’exécu9on  de  l’algorithme.  «  Quelque  chose  de  bien  finit  par  arriver.  »        

86  Algorithmique  Distribuée  

Page 87: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Spécifica9on  de  l’exclusion  mutuelle  

•  accès  concurren9el  à  une  ressource  partagée  unique  via  une  «  sec9on  cri9que  »    du  code  –  (ex.  une  imprimante).    

Demandeur

DedansDehors

Requête extérieure acquisition

libération

87  Algorithmique  Distribuée  

Page 88: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Spécifica9on  de  l’exclusion  mutuelle  

 •  Sûreté  :    Au  plus  un  processus  est  à  la  fois  dans  la  sec9on  cri9que.  

•  Vivacité  :  Tout  processus  demandeur  finit  par  entrer  en  sec9on  cri9que.      

88  Algorithmique  Distribuée  

Page 89: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Hypothèses  •  Processus  et  canaux  asynchrones  

•  Pas  de  fautes  •  Topologies  :  anneaux  unidirec9onnel  avec  orienta9on  consistante  

•  Au  moins  deux  processus  •  Un  seul  ini9ateur  •  Sec9on  cri9que  :  finie,  mais  non  bornée  

G D

G

G

G

G

G D

D

D

D

D

89  Algorithmique  Distribuée  

Page 90: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Syntaxe  générale  

•  2  primi9ves  :  – Envoyer  <MessageType,  liste  de  donnée  …>  à  X  

•  X  est  un  numéro  de  canal  ou  une  iden9té  

– Récep9on  <MessageType,  liste  de  donnée  …>  depuis  X  •  X  est  un  numéro  de  canal  ou  une  iden9té  •  Vaut  VRAI  ou  FAUX  (récep9on  non-­‐bloquante)  

Algorithmique  Distribuée   90  

Page 91: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Syntaxe  générale  

Algorithmique  Distribuée   91  

1 Syntaxe

Algorithme 1 Algorithme A pour tout process p

1: Instructions d’initialisation /* pas de declaration de variable ! */2: Tant que vrai faire3: Instructions4: Pour tout q 2 V \ {p} faire /* q est un numero de canal ou une identite */5: Si reception hTypeMess, liste variables ...i depuis q alors6: Instructions7: Fin Si8: Fin Pour9: Instructions

10: Si reception hTypeMess, liste variables ...i depuis X alors11: Instructions12: Fin Si13: Instructions14: Fin Tant que

2

Page 92: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

92  Algorithmique  Distribuée  

2 Mutex LeLann

Algorithme 2 Exclusion mutuelle de Le Lann

1: Si Initiateur alors /* Code d’initialisation */2: Envoyer hJi a D

3: Fin Si4: Tant que vrai faire5: Si reception hJi depuis G alors6: Si Etat = demandeur alors7: Etat dedans

8: SC /* Section critique */9: Etat dehors

10: Fin Si11: Envoyer hJi a D

12: Fin Si13: Fin Tant que

3

Page 93: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Preuve  de  correc9on      

(La  preuve  est  triviale,  mais  voici  une  version  très  détaillée.)    

Lemme   1   (Sûreté).   Jamais   plus   d’un   processus   n’est   en   sec=on  cri=que.    

Preuve.    •  Une  seule  créa9on   :  A   l’ini9alisa9on,  un  seul   jeton  est  créé  car   il  

n’y  a  qu’un  seul  ini9ateur.    •  Pas  de  duplica9on  :  Chaque  processus  relaie  un  message  «  Jeton  »  

à  droite  que  s’il  l’a  reçu  préalablement  de  la  gauche.    Donc,   le   jeton   créé   ini9alement   reste   unique   dans   le   système  

pendant  toute  l’exécu9on.  Comme  un  processus  ne  peut  exécuter  la  sec9on  cri9que  que  s’il  dé9ent  le  jeton,  le  lemme  est  vérifié.    

93  Algorithmique  Distribuée  

Page 94: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Preuve  de  correc9on      

Lemme   2   (Vivacité).   Tout   demandeur   entre   en   sec=on   cri=que   en  temps  fini.    

Preuve.    1.  L’ini9alisa9on  dure  un  temps  fini.  (algorithme)  2.  Le  temps  d’exécu9on  de  la  sec9on  cri9que  est  fini.  (hypothèse)  3.  Le  temps  d’acheminement  des  messages  est  fini.  (hypothèse)  4.  Le  temps  de  traitement  des  messages  est  fini.  (hypothèse)  5.  Toute  récep9on  d’un  jeton  est  suivie  d’un  envoi.  (algorithme)  6.  Le  jeton  se  déplace  toujours  dans  le  même  sens.  (algorithme)  On   a   donc   une   circula9on   de   jeton   unidirec9onnelle   perpétuelle.  

Ainsi,   tout  demandeur  finit  par  obtenir   le   jeton  et  ainsi  finit  par  exécuter  la  sec9on  cri9que.    

94  Algorithmique  Distribuée  

Page 95: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Preuve  de  correc9on      

D’après  les  deux  lemmes  précédents,  nous  avons  :      Théorème   1.   L’algorithme   1   résout   l’exclusion  mutuelle  dans  un  anneau  unidirec=onnel.    

 Remarque   2.   Si   on   lève   l’une   des   hypothèses,   la  preuve  ne  marche  plus  !    

95  Algorithmique  Distribuée  

Page 96: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Complexité  En  nombre  de  messages  et  en  temps  d’exécu9on  dans  le  meilleur  et  le  

pire  des  cas.  •   Complexité  pour  un  tour  de  jeton  :    

–  n    •  Si  un  processus  est  demandeur  en  cours  d’exécu9on,  quel  est  le  

nombre  de  messages  générés  avant  que  le  processus  entre  en  sec9on  cri9que    –  (pire  :  n  −  1,  meilleur  :  0)    

•  Temps  de  service  :  combien  d’autres  processus  peuvent  exécuter  la  sec9on  cri9que  avant  qu’un  processus  (demandeur)  par9culier  ne  le  fasse    –  (pire  :  n  −  1,  meilleur  :  0)    

•  Ra9o  nombre  de  messages  /  nombre  de  demandes    –  (pire  :  ∞  —  aucune  demande,  meilleur  :  1  —  tous  demandeurs)    

96  Algorithmique  Distribuée  

Page 97: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Conclusion  sur  l’algorithme  

•  Le  dernier  résultat  montre  un  inconvénient  majeur  de  ce  type  de  solu9on  (proac9ve)  :  les  échanges  de  messages  con9nuent  même  s’il  n’y  a  aucune  demande.    

•  Pour  régler  ce  problème,  il  existe  des  algorithmes  dit  «  à  permission  »  (réac9ve)  

97  Algorithmique  Distribuée  

Page 98: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Deuxième  Exemple  :    Circula9on  d’un  jeton  dans  un  réseau  

quelconque    

98  Algorithmique  Distribuée  

Page 99: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Spécifica9on  

La  circula=on  de  jeton    est  un    

algorithme  à  vague  

99  Algorithmique  Distribuée  

Page 100: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithme  à  vague  

Page 101: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Introduc9on  

•  Dans  un  système  distribué,  on  a  (parfois)  besoin  de  :  – Diffuser  des  informa9ons  (à  tous  les  processus)  

•  (Broadcast)  

Algorithmique  Distribuée   101  

m  

m  

m  

m  m   m  

Page 102: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Introduc9on  

•  Dans  un  système  distribué,  on  a  (parfois)  besoin  de  :  – Synchroniser  (globalement)  les  processus  

•  E.g.,  l’étape  i-­‐1  est  elle  finie  ?  

 

Algorithmique  Distribuée   102  

i  

i   i  

i  

i-­‐1  

Page 103: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Introduc9on  

•  Dans  un  systèmes  distribué,  on  a  (parfois)  besoin  de  :  – Calculer  des  fonc9ons  globales  

•  E.g.,  quelle  est  la  plus  pe9te  iden9té  ?    

Algorithmique  Distribuée   103  

23  

43   30  

67  

5  

Page 104: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Introduc9on  

•  Ces  problèmes  ont  plusieurs  points  communs  •  D’où,  l’idée  de  trouver  un  algorithme  général  

•  Les  algorithmes  à  vague  

Algorithmique  Distribuée   104  

Page 105: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Défini9on  

•  Un  algorithme  à  vague  vérifie  les  trois  propriétés  suivantes  :  – Terminaison  – Décision  – Dépendance  

Algorithmique  Distribuée   105  

Page 106: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Défini9on  

•  Terminaison  :  Toutes  ses  exécu9ons  (ou  vagues)  sont  finies    

•  Décision  :  Chacune  de  ses  exécu9ons  con9ent  au  moins  un  évènement  par9culier  appelé  décision  

•  Dépendance  :  Chaque  évènement  de  décision  est  causalement  précédé  (au  sens  de  Lamport)  par  au  moins  un  évènement  sur  chaque  processus  

Algorithmique  Distribuée   106  

Page 107: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemples  

•  Parcours  – Largeur  – Profondeur  (à  l’aide  d’un  jeton)  

•  Propaga9on  d’Informa9on  avec  Retour  (PIR)  

•  Applica9ons  :  snapshot,  détec9on  de  terminaison,  calcul  d’infimum,  etc.  

Algorithmique  Distribuée   107  

Page 108: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Instancia9on  

•  Spécificité  une  (vague  de)  circula9on  de  jeton  – Décision  (de  terminaison)    

•  Unique  •  Par  l’ini9ateur  

– Dépendance  •  Circula9on  :  séquen9elle  (ordre  causal  total)  

Algorithmique  Distribuée   108  

Page 109: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Instancia9on  

•  Une  (vague  de)  circula9on  de  jeton  – Sûreté  :  

•  Il  existe  au  plus  un  jeton  dans  le  réseau  •  Au  plus  une  décision  est  prise  (Décision)  •   Si  une  décision  est  prise,  alors  tous  les  processus  ont  été  visités  par  le  jeton  (Dépendance)  

– Vivacité  •  L'exécu9on  termine  (Terminaison)  •  L'ini9ateur  finit  par  décider  (Décision)  

Algorithmique  Distribuée   109  

Page 110: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Remarque  

•  Il  existe  aussi  des  algorithmes  qui  exécutent  une  infinité  de  vagues    – E.g.,  circula=on  de  jeton  perpétuelle  pour  l’exclusion  mutuelle  

Algorithmique  Distribuée   110  

Page 111: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Hypothèses  pour  notre  circula9on  de  jeton  

•  Processus  et  canaux  asynchrones  •  Pas  de  fautes  •  Canaux  é9quetés  de  1  à  δp  pour  tout  processus  p  

•  Topologies  :  quelconque  (connexe)  d’au  moins  deux  nœuds  

•  Mono-­‐ini9ateur  

111  Algorithmique  Distribuée  

Page 112: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Rappel    

•  Cas  plus  simple  :  circula9on  dans  un  réseau  en  arbre  

112  Algorithmique  Distribuée  

Page 113: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Circula9on  d’un  jeton  dans  un  arbre  

•  Vu  l’an  dernier  !  

Algorithmique  Distribuée  

1  

1  

1   1   1  

1  

2  

2  2  

3  

113  

Page 114: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Circula9on  d’un  jeton  dans  un  arbre  

•  L’ini9ateur  envoie  le  jeton  J  sur  le  canal  1  

Algorithmique  Distribuée  

1  

1  

1   1   1  

1  

2  

2  2  

3  

J  

114  

Page 115: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Circula9on  d’un  jeton  dans  un  arbre  

•  Sur  récep9on  du  canal  i,  un  non-­‐ini9ateur  renvoie  le  jeton  sur  le  canal  (i  mod  δ)+1  

•  Ici  δ  =  3  •  (3  mod  3)  +  1  =  1  

Algorithmique  Distribuée  

1  

1  

1   1   1  

1  

2  

2  2  

3  J  

115  

Page 116: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Circula9on  d’un  jeton  dans  un  arbre  

•  Sur  récep9on  du  canal  i,  un  non-­‐ini9ateur  renvoie  le  jeton  sur  le  canal  (i  mod  δ)+1  

•  Ici  δ  =  3  •  (3  mod  3)  +  1  =  1  

Algorithmique  Distribuée  

1  

1  

1   1   1  

1  

2  

2  2  

3  

J  

116  

Page 117: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Circula9on  d’un  jeton  dans  un  arbre  

•  Sur  récep9on  du  canal  i,  un  non-­‐ini9ateur  renvoie  le  jeton  sur  le  canal  (i  mod  δ)+1  

•  Ici  δ  =  1  •  (1  mod  1)  +  1  =  1  

Algorithmique  Distribuée  

1  

1  

1   1   1  

1  

2  

2  2  

3  

J  

117  

Page 118: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Circula9on  d’un  jeton  dans  un  arbre  

•  Sur  récep9on  du  canal  i,  un  non-­‐ini9ateur  renvoie  le  jeton  sur  le  canal  (i  mod  δ)+1  

•  Ici  δ  =  3  •  (1  mod  3)  +  1  =  2  

Algorithmique  Distribuée  

1  

1  

1   1   1  

1  

2  

2  2  

3  

J  

118  

Page 119: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Circula9on  d’un  jeton  dans  un  arbre  

•  Sur  récep9on  du  canal  i,  un  non-­‐ini9ateur  renvoie  le  jeton  sur  le  canal  (i  mod  δ)+1  

•  Ici  δ  =  1  •  (1  mod  1)  +  1  =  1  

Algorithmique  Distribuée  

1  

1  

1   1   1  

1  

2  

2  2  

3  

J  

119  

Page 120: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Circula9on  d’un  jeton  dans  un  arbre  

•  Sur  récep9on  du  canal  i,  un  non-­‐ini9ateur  renvoie  le  jeton  sur  le  canal  (i  mod  δ)+1  

•  Ici  δ  =  3  •  (2  mod  3)  +  1  =  3  

Algorithmique  Distribuée  

1  

1  

1   1   1  

1  

2  

2  2  

3  J  

120  

Page 121: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Circula9on  d’un  jeton  dans  un  arbre  

•  Sur  récep9on  du  canal  i,  un  non-­‐ini9ateur  renvoie  le  jeton  sur  le  canal  (i  mod  δ)+1  

•  Ici  δ  =  2  •  (1  mod  2)  +  1  =  2  

Algorithmique  Distribuée  

1  

1  

1   1   1  

1  

2  

2  2  

3  

J  

121  

Page 122: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Circula9on  d’un  jeton  dans  un  arbre  

•  Sur  récep9on  du  canal  i,  un  non-­‐ini9ateur  renvoie  le  jeton  sur  le  canal  (i  mod  δ)+1  

•  Ici  δ  =  2  •  (1  mod  2)  +  1  =  2  

Algorithmique  Distribuée  

1  

1  

1   1   1  

1  

2  

2  2  

3  

J  

122  

Page 123: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Circula9on  d’un  jeton  dans  un  arbre  

•  Sur  récep9on  du  canal  i,  un  non-­‐ini9ateur  renvoie  le  jeton  sur  le  canal  (i  mod  δ)+1  

•  Ici  δ  =  1  •  (1  mod  1)  +  1  =  1  

Algorithmique  Distribuée  

1  

1  

1   1   1  

1  

2  

2  2  

3  

J  

123  

Page 124: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Circula9on  d’un  jeton  dans  un  arbre  

•  Sur  récep9on  du  canal  i,  un  non-­‐ini9ateur  renvoie  le  jeton  sur  le  canal  (i  mod  δ)+1  

•  Ici  δ  =  2  •  (2  mod  2)  +  1  =  1  

Algorithmique  Distribuée  

1  

1  

1   1   1  

1  

2  

2  2  

3  J  

124  

Page 125: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Circula9on  d’un  jeton  dans  un  arbre  

•  Sur  récep9on  du  canal  δ,  l’ini9ateur  décide  la  terminaison  

•  Ici  δ  =  2  

Algorithmique  Distribuée  

1  

1  

1   1   1  

1  

2  

2  2  

3  

125  

Page 126: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Circula9on  d’un  jeton  dans  un  réseau  quelconque  ?  

•  Est-­‐ce  que  l’algorithme  précédent  fonc9onne  ?  

NON  !  

Algorithmique  Distribuée   126  

Page 127: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1   1  

1  

1  

1  

1  

2  

2  

2  

2  

2  

2  

127  

Page 128: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Solu9on  

Algorithmique  Distribuée   128  

•  Algorithme  de  Tarry  (1885)  

•  Problème  de  Labyrinthe  •  «   Ne   reprendre   l'allée  

ini>ale   qui   a   conduit   à   un  carrefour  pour  la  première  fois  que   lorsqu'on  ne  peut  pas  faire  autrement  »  

•  Sommets  =  intersec9ons  •  Liens   =   allées   entre   les  

intersec9ons  des  arêtes  

Page 129: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Variables  

•  Pour  chaque  processus  

– Un  pointeur  Père  ∈  {T,⊥}  ∪  {1…δ}  ini9alisé  à    •  T  pour  l’ini9ateur  •  ⊥  pour  les  suiveurs  

 – Un  tableau  de  Booléen  Visite[1..δ],  ini9alement  toutes  les  cases  sont  à  faux.      

Algorithmique  Distribuée   129  

Page 130: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1   1  

1  

1  

1  

3  

2  

2  

2  

2   2  2  

1  3  

130  

Page 131: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1   1  

1  

1  

1  

3  

2  

2  

2  

2   2  2  

1  3  

J  

131  

Page 132: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1   1  

1  

1  

1  

3  

2  

2  

2  

2   2  2  

1  3  

J  

132  

Page 133: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1   1  

1  

1  

1  

3  

2  

2  

2  

2   2  2  

1  3  

J  

1  

133  

Page 134: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2  

2  

2  

2   2  2  

1  3  

J  

1  

1  

134  

Page 135: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2  

2  

2  

2   2  2  

3  

J  

1  

1  

1  

135  

Page 136: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2  

2  

2  

2   2  2  

3  J  

1  

1  

1  

136  

Page 137: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2  

2  

2  

2   2  2  

3  

J  

1  

1  

1  

137  

Page 138: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2  

2  

2  

2   2  2  

3  

J  

1  

1  

1  

138  

Page 139: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2  

2  

2   2  2  

3  

J  

1  

1  

1  

2  139  

Page 140: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2  

2   2  2  

3  

J  1  

1  

1  

2  

2  

140  

Page 141: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2   2  2  

3  

J  

1  

1  

1  

2  

2  

2  

141  

Page 142: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2   2  2  

3  

J  

1  

1  

1  

2  

2  

2  

142  

Page 143: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2   2  2  

3  

J  1  

1  

1  

2  

2  

2  

143  

Page 144: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2   2  2  

3  

J  

1  

1  

1  

2  

2  

2  

144  

Page 145: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2   2  2  

3  

J  

1  

1  

1  

2  

2  

2  

145  

Page 146: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2   2  2  

3  

J  

1  

1  

1  

2  

2  

2  

146  

Page 147: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2   2  2  

3  

J   1  

1  

1  

2  

2  

2  

147  

Page 148: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2   2  2  

3  

J  

1  

1  

1  

2  

2  

2  

148  

Page 149: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

1  

3  

2   2  2  

3  

J  

1  

1  

1  

2  

2  

2  

149  

Page 150: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

3  

2   2  2  

3  

J  

1  

1  

1  

2  

2  

2  1  

150  

Page 151: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Exemple  

Algorithmique  Distribuée  

1  

2  

3  

1  

2  

1  

1  

1  

3  

2   2  2  

3  1  

1  

1  

2  

2  

2  1  

Terminé  !  

151  

Page 152: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Conclusion  générale  

•  Depuis  40  ans  – La  plupart  des  problèmes  d’algorithmiques  répar9es  ont  été  résolus  de  manière  efficace  

– En  supposant  des  réseaux  sans  pannes  …  

Algorithmique  Distribuée   152  

Page 153: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Challenge  actuel  •  Les  réseaux  modernes  sont  à  grande-­‐échelle  et  fait  de  machines  hétérogènes  et  produites  en  masses  à  faible  coût,  e.g.  –  Internet    

•  (10  milliard  de  machine  connectée  d’ici  2016)  •  Internet  des  objets  

–  Réseaux  sans  fils  •  Communica9on  radio  :  beaucoup  de  pertes  de  messages    •  Crash  de  machines  à  cause  des  ba�eries  limitées  

⇒  Forte  probabilité  de  pannes  ⇒  Interven9on  humain  impossible  ⇒  Besoin  d’algorithmes  distribués  tolérant  les  pannes  

Algorithmique  Distribuée   153  

Page 154: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Syntaxe  :  récep9on  bloquante  

Algorithmique  Distribuée   154  

3 Reception bloquante

Algorithme 3 Algorithme avec reception bloquante pour tout process p

1: Instructions d’initialisation2: Tant que vrai faire3: Instructions4: attendre de recevoir X messages de la forme hTypeMess, liste variables ...i depuis tous les

processus de S

5: Instructions6: Fin Tant que

Algorithme 4 Algorithme avec reception bloquante pour tout process p

1: Instructions d’initialisation2: Tant que vrai faire3: Instructions4: ListeMess ;5: i 06: Tant que i < X faire7: Pour tout q 2 S faire8: Si reception M = hTypeMess, liste variables ...i depuis q alors9: i++

10: ListeMess ListeMess [ {M}11: Fin Si12: Fin Pour13: Fin Tant que14: Instructions15: Fin Tant que

4

Page 155: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Syntaxe  :  récep9on  bloquante  

Algorithmique  Distribuée   155  

3 Reception bloquante

Algorithme 3 Algorithme avec reception bloquante pour tout process p

1: Instructions d’initialisation2: Tant que vrai faire3: Instructions4: attendre de recevoir X messages de la forme hTypeMess, liste variables ...i depuis tous les

processus de S

5: Instructions6: Fin Tant que

Algorithme 4 Algorithme avec reception bloquante pour tout process p

1: Instructions d’initialisation2: Tant que vrai faire3: Instructions4: ListeMess ;5: i 06: Tant que i < X faire7: Pour tout q 2 S faire8: Si reception M = hTypeMess, liste variables ...i depuis q alors9: i++

10: ListeMess ListeMess [ {M}11: Fin Si12: Fin Pour13: Fin Tant que14: Instructions15: Fin Tant que

4

Page 156: Algorithmique-Distribuée-devismes/SD/AD_cours1.pdf · Syntaxe-générale-Algorithmique-Distribuée- 91 1 Syntaxe Algorithme 1 Algorithme A pour tout process p 1: Instructions d’initialisation

Algorithmique  Distribuée  

Merci  de  votre  a�en9on  !  

156