Support de cours réalisé pour les étudiants en IMR (Informatique Multimédia et Réseau) de l'ENSSAT (http://www.enssat.fr/), année scolaire 2010-2011.
Bien que j'aie été amenée à faire ce cours, je ne me considère vraiment pas comme une experte dans le domaine : si vous y voyez une erreur surtout n'hésitez pas à me le signaler, je mettrai le support à jour pour essayer de continuer à partager quelque-chose de correct.
Les annexes sont partagées ici : https://fr.slideshare.net/lodieDescharmes/cours-dalgorithmique-distribue-20102011-annexes
2. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 2
Plan du cours
0 Introduction
Définition d’un système réparti, problématique globale
1 Exemples informels introductifs
Introduction aux principales notions utiles en algorithmique distribuée
1 : notion processus
2 : notion de séquences d’évènements, expression de synchronisation
3 : exclusion mutuelle
2 CSP
Tutoriel
Exemples simples
3 1 producteur / 1 consommateur
Présentation de l’’exemple et mise en œuvre distribuée
Notion de prédicat régulier
Algorithme
4 N producteurs / 1 consommateur
Présentation de l’exemple et mise en œuvre distribuée
Algorithme
Contrôle continu
3. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 3
Introduction
Généralités
• Informatique classique
– Centralisation
• Des moyens de calcul
• Des moyens de stockage
• Du contrôle
• Des données
• Informatique parallèle
– Motivations
• Calcul intensif, applications scientifiques
• Gestion de grandes masses de données
– Solution
• Augmenter la puissance de calcul
• Augmenter le nombre de processeurs
4. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 4
Introduction
Généralités
• Informatique répartie
• Développement des réseaux
• Intégration d’applications séparées
• Pénétration de l’informatique dans tous les domaines
• Informatique mobile
• Utilisateurs nomades
• Moyens de traitement légers
• Informatique intégrées aux objets
• Informatique pervasive
• Accès à l’information et aux services à tout moment, de n’importe où, avec n’importe
quel terminal
Solution : systèmes répartis
– Répartition
• Des moyens de calcul
• Des moyens de stockage
• Des données
• Du contrôle
5. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 5
• Définition : système (ou architecture) distribué (ou réparti)
– Ensemble de processus
– Coopérant à un même service
– S’exécutant en parallèle
– Sur différents sites
En anglais = « distributed architecture »
Hypothèse de simplification : les processus sont placés sur des sites distincts, un
processus par site
• Définition : algorithme de contrôle distribué
– Contrôle des mécanisme de communication et de synchronisation entre
processus
– Pas de mémoire commune
• Définition : algorithme de contrôle centralisé
– Contrôle des mécanisme de communication et de synchronisation entre processus
– Mémoire(s) commune(s)
Introduction
Premières définitions
6. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 6
• Plusieurs processus concurrents sur des sites différents
• Pas de mémoire commune, pas d’horloge partagée
• Les délais de transmission de messages sont non négligeables
• Chaque processus ne connaît à un instant donné que son propre état. Il n’y
a pas de vision globale de l’état du système.
• La réception d’information venant d’un autre site l’informe sur son état
antérieur, mais pas sur l’état actuel
concepts, mécanismes, techniques et outils adaptés au contexte des
systèmes distribués
• Exemple de problème à éviter : l’interblocage
Se produit lorsque deux processus concurrents s'attendent mutuellement.
Les processus bloqués dans cet état le sont définitivement.
Introduction
Enoncé du problème
7. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 7
Introduction
Pourquoi des systèmes distribués
• Avantages des systèmes distribués
– Coût : plusieurs processeurs à bas prix
– Puissance de calcul et de stockage : aucune machine centralisée ne peut
rivaliser
– Performance (accélération) : via du calcul parallèle
– Adaptation : transparence réseau, interopérabilité
– Fiabilité : résistance globale du système aux pannes locales
– Extensibilité : croissance progressive selon le besoin
8. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 8
Chapitre 1
Exemples informels introductifs
Exemple 1 : notion de processus
Exemple 2 : coopération entre processus
Exemple 3 : compétition entre processus
9. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 9
Exemple 1 – processus
Présentation de l’exemple, expression distribuée
• Exemple séquentiel
• Intuitivement, on comprend les tâches de cette séquence peuvent être
séparées en trois activités indépendantes :
• Ses trois activités peuvent se dérouler sur des processus différents
• Formalisme CSP
i := 1 j := j+1 k := l*2 ;
l := l+1
i := 1 ;
j := j+1 ;
k := l*2 ;
l := l+1
[ i := 1 || j := j+1 || k := l*2 ; l := l+1 ]
10. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 10
Exemple 1 – processus
Notion de processus
• Processus ≠ programme
– Programme = description d’un calcul
– Processus = déroulement d’un calcul
• Un programme peut engendrer plusieurs processus
• Pour s’exécuter, un processus à besoin de ressource(s)
– Processeur
– Accès à une variable
– Signal…
11. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 11
Exemple 2 – coopération
Présentation de l’exemple
• Exemple séquentiel : la recette de la mousse au chocolat
1. Chauffer le chocolat
2. Casser les œufs
3. Battre les blancs
4. Mélanger les jaunes et le sucre
5. Mélanger le chocolat et le résultat de (4)
6. Mélanger les blancs et le résultat de (5)
12. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 12
Exemple 2 – coopération
Expression distribuée
• Expression distribuée
– Il peut être intéressant de découper ce programme en plusieurs processus
(efficacité, clarté)
– Choix arbitraire : décomposition en fonction des ressources nécessaires à
l’exécution du programme
• Four
• Batteur
• Mixeur
3 processus F, M, B
Processus F Processus M Processus B
chauffer_chocolat casser_œufs ;
battre_blancs
a = mélanger_jaunes_sucre ;
b = mélanger_chocolat_et a ;
Mélanger_blancs_et b
13. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 13
Exemple 2 – coopération
Séquences d’évènements
• Ces processus sont en relation de collaboration pour l’élaboration de la
mousse au chocolat
• On peut définir pour chaque étape un évènement de début et un évènement
de fin (durée nulle par définition)
• On a les séquences d’évènements suivantes :
– M2 ≤ B1
– M3 ≤ B3
– F2 ≤ B2
– Si i < j, Mi ≤ Mj, Bi ≤ Bi, Fi ≤ Fj
Processus F Processus M Processus B
(F1) chauffer_chocolat (F2) (M1) casser_œufs (M2) ;
battre_blancs (M3)
(B1) a = mélanger_jaunes_sucre (B2) ;
b = mélanger_chocolat_ a (B3) ;
Mélanger_blancs_ b (b4)
14. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 14
Exemple 2 – coopération
Expression de synchronisation
• Synchroniser le système = cadencer l’occurrence des évènements
• Mise en œuvre par un contrôleur qui
– Perçoit les occurrence des évènements
– Peut ralentir ou arrêter un processus
• Définition : expression de synchronisation
– L’ensemble des séquences d’évènements légales constituent l’expression de la
synchronisation
• Mettre en œuvre le contrôleur c’est construire un mécanisme opératoire
respectant la spécification de la synchronisation
• Le contrôleur peut être une entité unique (contrôle centralisé)
ou il peut être distribué sur l’ensemble du système (contrôle réparti) ← objet
de ce cours
15. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 15
Exemple 2 – coopération
Expression de synchronisation
• Dans notre exemple, l’expression de synchronisation est la suivante :
– M2 ≤ B1
– M3 ≤ B3
– F2 ≤ B2
– Si i < j, Mi ≤ Mj, Bi ≤ Bi, Fi ≤ Fj
16. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 16
Exemple 2 – coopération
Autre expression distribuée, autre expression de synchronisation
• Exercice : trouver une autre décomposition du même exemple et donner
l’expression de synchronisation associée
• Cf. annexe 1
17. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 17
Exemple 3 – compétition
Présentation de l’exemple
• Deux aides comptables (AC1 et AC2)
dans une entreprise
– Etablissent les factures
– Gèrent les comptes clients
• Un client X effectue deux commandes
C1 et C2
• Sans concertation, les deux
comptables doivent prendre en charge
ces commandes
18. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 18
Exemple 3 – compétition
Présentation de l’exemple
• Exemple de traitement sans contrôle particulier
• A la fin, la valeur du compte de X est incrémentée de C1 au lieu de C1+C2
19. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 19
Exemple 3 – compétition
Concept d’exclusion mutuelle
• Explication : AC1 et AC2 entrent en compétition pour l’accès à une
ressource : le compte client dont l’usage en mise à jour est critique
ressource critique
• Lorsqu’un processus accède à une ressource critique, on dit qu’il est en
section critique
• Toutes les sections critiques d’un ensemble de processus d’un même
système doivent s’exclure mutuellement
exclusion mutuelle
20. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 20
Exemple 3 – compétition
Concept d’exclusion mutuelle
• Un protocole doit être défini de manière à garantir cette exclusion.
– Protocole d’acquisition de la ressource critique
– Section critique
– Protocole de libération de la ressource critique
protocole d’exclusion mutuelle
• Si un processus P entame sa phase d’acquisition alors que la ressources
critique est utilisée par un autre processus P’, il devra attendre (ie. rester
dans la phase d’acquisition) jusqu’à ce que le processus P’ ait terminé son
protocole de libération
21. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 21
Exemple 3 – compétition
Propriétés des protocoles d’exclusion mutuelle
• Situations à éviter
– Interblocage : il existe au moins un processus qui désire accéder à la section
critique et aucun processus ne peut l’atteindre
– Famine : le protocole d’exclusion mutuelle ne garanti pas que tout processus
désirant accéder à une ressource peut le faire en un temps fini
• Propriétés (souhaitables) des protocoles d’exclusion mutuelle
– Exclusion : A tout instant, un processus au plus se trouve en section critique
pour une ressource donnée
– Equité (ou vivacité) : non famine. Tout processus demandant la section critique
l’atteint en un temps fini.
L’équité entraîne le non interblocage
– Indépendant du fonctionnement applicatif des processus
– Identique à tous les processus
Remarque : il est parfois souhaitable de ne pas exclure une possibilité de
famine (processus prioritaires)
22. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 22
Exemple 3 – compétition
Exclusion mutuelle et ordonnancement
• Différents ordres possibles de passage en section critique (s’il n’y a
pas famine)
– FIFO (les processus accèdent à la section critique dans l’ordre où ils
l’ont demandée)
– Attente linéaire : tout processus demandeur peut se faire doubler une
au plus une fois par chaque processus
– Attente bornée : pour un protocole donné, il existe une fonction f(n) où
n est le nombre de sites, telle qu’un processus donné se fasse doubler
par au plus f(n) processus
23. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 23
Notions à retenir
• Processus
• Ressource
• Evènement
• Coopération à la réalisation d’une tâche
– Ordonnancement des évènements
– Expression de synchronisation
• Compétition entre plusieurs processus pour l’accès à une ou plusieurs
ressources partagées
– Ressource critique
– Section critique
– Exclusion mutuelle
– Interblocage
– Famine
25. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 25
CSP
Présentation
• Langage formel permettant de modéliser l’interaction de systèmes
distribués
• Permet l'implémentation rapide des paradigmes classiques de la
concurrence
• Ce n'est pas un langage de programmation complet, mais il a été mis en
pratique industriellement comme un outil de spécification formelle de
l'exécution concurrente de systèmes
• CSP a été décrit par Sir Charles Antony Richard Hoare (Quicksort, logique
de Hoare, langage formel CSP, langage de programmation Occam,
système de synchronisation « moniteur »)
• Champ de recherche toujours actif
26. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 26
CSP
Présentation
• Modélisation des systèmes distribués = « programmation concurrente »
– Concurrence disjointe : les entités concurrentes ne communiquent et
n'interagissent pas.
– Concurrence compétitive : un ensemble d'entités concurrentes en compétition
pour l'accès à certaines ressources partagées (par exemple le temps CPU, un
port d'entrées/sorties, une zone mémoire).
– Concurrence coopérative : un ensemble d'entités concurrentes qui coopèrent
pour atteindre un objectif commun. Des échanges ont lieu entre les processus.
27. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 27
CSP
Structure d’un programme
• Suite de commandes et de
déclarations de variables
séparées par des « ; »
Exemple
x : integer ;
y : integer ;
x := 4 ;
• Deux types de commandes
– Simples
• commande nulle (skip)
• commande d'affectation
• commande d'entrée/sortie
– Structurées
• commande parallèle
• commande répétitive
• commande alternative
29. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 29
CSP
Eléments spécifiques
• Signal
– Variable complexe
• 1 constructeur = identifiant libre
• 1 ensemble de valeurs (entiers, chaîne de caractères, autres signaux…)
– Syntaxe
constructeur (valeur1 ; … ; valeurN)
– Exemple : p(3,5)
• Constructeur : p
• Valeurs : 3 et 5
• Signal « pur »
– p() est un « signal pur », ie. ne contient pas de valeurs
30. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 30
CSP
Commande nulle
• Commande nulle
– Ne fait rien, permet juste de
combler un bloc d’instruction vide
– Syntaxe :
skip
Exemple
consommateur[1]!nb -> skip ;
31. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 31
CSP
Commande d’affectation
• Commande d’affectation
– Permet d’affecter une valeur à une
variable
– Syntaxe :
variable := valeur
Exemple
message : string := "";
nb : integer := 0 ;
nb := nb + 1 ;
x := p(4) ;
32. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 32
CSP
Commande parallèle
• Commande parallèle
– Permet la mise en concurrence de processus
– Syntaxe :
[
proc1 :: liste de commandes
||
proc2 :: liste de commandes
||
…
]
– La commande se termine lorsque tous les processus qu’elle définit sont terminés
– L’échec d’un processus entraîne l’échec de la commande
– Une variable définie avant une commande parallèle est visible des tous les
processus qu’elle contient partage de ressources dont les contraintes (accès
exclusif etc.) sont à la charge du programmeur
33. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 33
CSP
Commandes d’entrée/sortie
• Commandes d’entrée/sortie
– Permet la communication entre processus
– Syntaxe commande d’entrée :
processus_source ? variable_cible (communication synchrone)
processus_source ?? variable_cible (communication asynchrone)
– Syntaxe commande de sortie :
processus_cible ! variable_source (communication synchrone)
processus_cible !! variable_source (communication asynchrone)
• Sonde booléenne
– Permet d’établir la possibilité de communication avec un processus
– Prend la valeur « vraie » sur le processus en question est bloqué en attente de
communication
– Syntaxe
!?processus
34. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 34
CSP
Commande d’entrée/sortie
• Cas particulier de la communication synchrone
– La communication synchrone est possible si :
• Il y a une commande d’entrée et une commande sortie
• Les deux processus se nomment mutuellement
• La variable cible et la variable source sont de même type
– Sinon, les processus sont mis en attente interblocage
– Le premier processus demandant la communication est mis en attente jusqu’à ce
que le second le rejoigne
Principe du rendez-vous
• Si un des processus est mort, toute commande d’entrée sortie impliquant se
processus échoue
35. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 35
CSP
Commande d’entrée/sortie
• Exemple :
• Cas particulier : synchronisation sans transmission de variable
Cas particulier d’une synchronisation sans transmission de valeur (utilisation d’un signal pur)
[
Producteur :: Consommateur ! p() ;
||
Consommateur :: Producteur ? p() ;
]
Le processus producteur transmet une variable x au processus consommateur
[
Producteur :: Consommateur ! x ;
||
Consommateur :: Producteur ? x ;
]
36. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 36
CSP
Commande alternative
• Commande alternative = ensemble de commandes sélectives
• Commande sélective
– Permet de modéliser une liste de commandes à exécuter si certaines conditions
(la « garde ») sont remplies
– Commande sélective = une garde + une liste de commande
– Schéma : condition action
– Syntaxe
garde liste de commandes
• Garde
– Une garde = (une ou plusieurs expression booléenne) et/ou (une commande
d’entrée) (l’une ou l’autre peut être omise)
– Syntaxe
expression_booléenne ; commande_entrée
Ici, « ; » = opérateur de conjonction
37. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 37
CSP
Commande alternative
• Evaluation d’une garde
– Trois valeurs possibles (logique trivaluée) : vraie, fausse ou neutre
– Expression booléenne : vraie ou fausse
– Commande d’entrée
• Vrai si la communication est possible immédiatement
• Neutre si le processus nommé par la commande n’est pas encore prêt
• Faux si le processus nommé par la commande est « mort » (ie. a fini son exécution)
38. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 38
CSP
Commande alternative
• Evaluation d’une garde
– Evaluation d’une garde comprenant une expression booléenne ET une
commande d’entrée
39. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 39
CSP
Commande alternative
• Commande alternative
– Ensemble de commandes sélectives (ou « gardées »)
– Syntaxe
[
garde1 liste de commandes
[]
garde2 liste de commandes
[]
…
]
– Si une ou plusieurs gardes sont vraies, sélection aléatoire d’une des gardes
– Si aucune garde n’est vraie, mais que certaines sont neutres, mise en attente
des gardes neutres
– Si toutes les gardes sont fausses, la commande alternative échoue
– Si une garde est sélectionnée, la liste de commandes correspondantes est
exécutée
40. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 40
CSP
Commande alternative
• Remarque : seules les commandes d’entrées sont autorisées dans les
gardes afin d’éviter les incohérences
Exemple autorisant les commandes de sorties dans les gardes
[
Proc1 ::
[ proc2 ? p() …
[] proc2 ? q() …
]
||
Proc2 ::
[ proc1 ! p() …
[] proc1 ! q() …
]
]
Proc1 et Proc2 arrivent simultanément sur leur commande alternative
Toutes les gardes sont potentiellement vraies. Si c’est le cas, Proc1 en choisi aléatoirement une et Proc2 fait de même
Si Proc1 et Proc2 choisissent la même communication : pas de problème
Sinon interblocage
41. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 41
CSP
Commande répétitive
• Commande répétitive
– Permet de répéter une même
commande alternative tant qu’au
moins une des gardes est évaluée
à vrai
– Syntaxe
* commande alternative
Exemple
i := 0 ;
* [
i < 10 i := i+1
]
Ici la commande répétitive se terminera lorsque i
aura atteint la valeur 10
42. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 42
CSP
Définition de processus
• Définition de processus
– Permet de définir un processus à
l’extérieur d’une commande
parallèle ou alternative (afin de
clarifier le code)
– Syntaxe
PROCESSUS == liste
d’instructions
Exemple
PRODUCTEUR ==
…
CONSOMMATEUR ==
…
MAIN ==
[
producteur :: PRODUCTEUR
||
consommateur :: CONSOMMATEUR
]
La liste d’instructions MAIN est alors cette
exécutée au lancement du programme
43. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 43
CSP
Autres commandes et conventions d’écriture
• Autres commandes
– Affichage : print (message)
– Aléatoire : x := random (debut, fin)
– Mise en attente : sleep (tps)
• Définition de constantes : define CONSTANTE valeur
• Commentaires : -- commentaires
44. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 44
CSP
Exercices
• Cf. annexe 2
Exercice 1 Ecrire le processus p cherchant dans un tableau t de 100 éléments
(indicés de 1 à 100) la place du « 0 » de plus petit indice
Exercice 2 Ecrire le processus X qui reçoit des caractères d’un processus
« gauche » et les transmet, à l’exception des blancs, au processus
« droite » (réception synchrone, émission asynchrone)
Exercice 3 A et B envoient des entiers à C qui les cumule par « paquets ». Dès
qu’un paquet est ≥ 1000, C envoi la somme correspondante à D
Ecrire le processus C
A
B
C D
entier
entier
Ʃ
45. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 45
Chapitre 3
1 producteur / 1 consommateur
Présentation de l’exemple
Expression des conditions de production et de consommation
Mise en œuvre distribuée
Notion de prédicat régulier
Algorithme
46. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 46
1 producteur / 1 consommateur
Présentation de l’exemple
• 2 processus :
– « producteur »
– « consommateur »
• Deux opérations :
– « produire », opération du processus « producteur »
– « consommer », opération du processus « consommateur »
• Le producteur produit des message à destination du consommateur
qui les consomme
47. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 47
1 producteur / 1 consommateur
Présentation de l’exemple
• Invariant du système
(I1) : il existe au plus n messages produits et non consommés
• Invariant représenté par un tampon (= un tableau) pouvant contenir n
informations est partagé par les deux processus
• L’opération « produire » n’est permise que si le tampon contient au moins
une case libre (vide)
• L’opération « consommer » n’est permise que si le tampon contient au moins
une case pleine (non vide)
48. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 48
1 producteur / 1 consommateur
Expression des conditions de production et de consommation
• 4 compteurs monotones croissants
– DEBPROD : nombre de productions commencées (ie. nombre de débuts
d’exécution de « produire »)
– FINPROD : nombre de productions terminées
– DEBCONS : nombre de consommations commencées
– FINCONS : nombre de consommations terminées
• Il est nécessaire de compter séparément des débuts et fin d’opérations
« produire » et « consommer » car elle ont une durée d’exécution non nulle.
49. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 49
1 producteur / 1 consommateur
Expression des conditions de production et de consommation
• A tout instant, il y a plus de production commencées qu’il y en a de
terminées. Idem pour les consommations.
On a donc :
– FINPROD ≤ DEBPROD
– FINCONS ≤ DEBCONS
• « condition de production » = il y a au moins une case libre
Cp : (Cp) DEBPROD - FINCONS < n
• « condition de consommation » = il y a au moins une case pleine
Cc : (Cc) DEBCONS - FINPROD < 0
• Nouvelle expression de l’invariant du système
(I2) : l’opération « produire » peut s’exécuter si et seulement si Cp est
vrai, l’opération « consommer » peut s’exécuter si et seulement si Cc
est vrai
50. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 50
1 producteur / 1 consommateur
Mise en œuvre distribuée
• 1 site de production (Sp), hébergeant le processus « producteur »
• 1 site de consommation (Sc), hébergeant le processus « consommateur »
• Connectés entre eux par un réseau
• Compteurs modifiés par le « producteur » = variables du site (Sp)
• Compteurs modifiés par le « consommateur » = variables du site (Sc)
51. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 51
• MAIS, le producteur doit pouvoir évaluer la condition de production Cp et le
consommateur doit pouvoir évaluer la condition de consommation Cc
• DONC, l’évaluation des conditions Cp et Cc implique la lecture de variables
se trouvant sur l’autre site
• Rappel :
« condition de production » Cp : (Cp) DEBPROD - FINCONS < n
« condition de consommation » Cc : (Cc) DEBCONS - FINPROD < 0
1 producteur / 1 consommateur
Mise en œuvre distribuée
52. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 52
• Conséquences
L’évaluation de Cp par le site producteur nécessite un échange de message
avec le site consommateur afin d’obtenir la valeur de FINCONS
L’évaluation de Cc par le site consommateur nécessite un échange de
message avec le site producteur afin d’obtenir la valeur de FINPROD
A cause des délais de transmission, le producteur ne peut connaître à un
instant donné la valeur exacte de FINCONS. Il doit se contenter d’une copie
de la valeur, éventuellement en retard sur la laveur exacte.
Idem pour le consommateur avec FINPROD.
1 producteur / 1 consommateur
Mise en œuvre distribuée
53. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 53
• Idée
– Disposer chez le producteur d’une copie de FINCONS : IFINCONS
– Disposer chez le consommateur d’une copie de FINPROD : IFINPROD
• IFINCONS est une image retardée de FINCONS
• IFINPROD est une image retardée de FINPROD
• Hypothèse : l’échange de messages entre Sp et Sc se fait sans
déséquencement
• On a donc à tout instant : IFINCONS ≤ FINCONS et IFINPROD ≤ FINPROD
1 producteur / 1 consommateur
Mise en œuvre distribuée
54. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 54
• Exercice
– Cp’ = nouvelle version de la condition de production exprimée avec les
variables locales au site de production
– Cc’ = nouvelle version de la condition de consommation exprimée avec
les variables locales au site de consommation
– Exprimer Cp’ et Cc’
– Montrer que Cp’ Cp⇒
– Montrer que Cc’ Cc⇒
• Cf. annexe 3
1 producteur / 1 consommateur
Mise en œuvre distribuée
55. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 55
1 producteur / 1 consommateur
Notion de prédicat régulier
• Définition : prédicat régulier
Soit le prédicat (E) : ∑i αi Ci ≥ K
où αi > 0 ou αi < 0
Ci : compteurs monotones croissants
K : constante entier relatif
Le prédicat (E) est dit régulier par rapport à un compteur Ci si son coefficient
αi est positif
• Théorème
Si (P) est un prédicat de synchronisation et s’il est régulier par rapport
à un compteur Ci , alors on peut (sans danger) utiliser une version
retardée de Ci
56. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 56
1 producteur / 1 consommateur
Notion de prédicat régulier
• Dans notre exemple :
• Avantages :
test de 2 variables locales
désynchronisation entre évaluation du prédicat et communication de de la
valeur des compteurs
• Inconvénients :
ralentit la production (Cp peut autoriser la production alors que Cp’ l’interdit)
(Cp) : DEBPROD – FINCONS < n
FINCONS – DEBPROD > n
Le coefficient de FINCONS est 1, donc (Cp) est régulier par rapport à FINCONS
L’utilisation de IFINCONS (≤FINCONS) est donc valide (ie. si Cp autorise à produire, alors Cp’ aussi)
(Cc) : DEBCONS – FINPROD < 0
FINPROD – DEBCONS > 0
Le coefficient de FINPROD est 1, donc (Cc) est régulier par rapport à FINPROD
L’utilisation de IFINPROD (≤FINPROD) est donc valide (ie. si Cc autorise à consommer, alors Cc’ aussi)
57. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 57
1 producteur / 1 consommateur
Architecture
• Recommandation : séparer le processus « applicatif » du processus « contrôleur »
• Le tableau « tampon » peut être implémenté indifféremment sur l’un ou l’autre des
deux sites, ou sur un troisième. Ici, sur le site de consommation.
59. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 59
Chapitre 6
N producteurs / 1 consommateur
Présentation de l’exemple
Exclusion mutuelle par jeton circulant
Algorithme
60. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 60
N producteurs / 1 consommateur
Présentation de l’exemple
• m producteurs : P1, P2, … Pm
• 1 consommateur : C
• 1 tampon à n cases
61. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 61
N producteurs / 1 consommateur
Présentation de l’exemple
• DEBPROD et FINPROD : début et fin d’une production, une seule
production à la fois. Ces variables doivent être partagées par l’ensemble
des producteurs.
ressources critique
• Idem pour IFINCONS nécessaire à l’évaluation de la condition de
production
• Besoin d’un protocole d’exclusion mutuelle pour l’accès à ces variables,
assurant entre autre :
– L’équité : un site demandant l’accès à une ressource doit l’obtenir au bout d’un
temps fini
– La vivacité : absence d’interblocage
• 3 propositions de mise en œuvre
– Technique du jeton circulant
– Technique des distributions par duplication
– Technique des distributions par éclatement
62. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 62
N producteurs / 1 consommateur
Technique du jeton circulant - présentation
• L’ensemble des sites sont sur un
anneau unidirectionnel
• Hypothèse : le positionnement des
processus sur l’anneau est statique
• Principe : le jeton est un message
circulant sur l’anneau dont la
possession donne le droit d’entrer en
section critique (ie. d’accéder à
DEBPROD, FINPROD et IFINCONS,
et donc de produire)
• Dans le jeton, on place DEBPROD et
IFINCONS (pour l’évaluation de la
condition de production)
63. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 63
N producteurs / 1 consommateur
Technique du jeton circulant – première solution non équitable
• Quand un processus Pi (i = 1..m) reçoit le jeton, on distingue deux
possibilités
– Pi ne veut pas produire envoi du jeton au successeur Pi+1
– Pi veut produire
Evaluation de la condition de production
Si condition ok :
production
modification de DEBPROD
envoi du jeton au successeur
Sinon, envoi du jeton au successeur
• Quand C reçoit le jeton, il consomme un message s’il y en a au moins un
dans le tampon
64. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 64
N producteurs / 1 consommateur
Technique du jeton circulant – première solution non équitable
• Constatation : les m-n derniers processus peuvent être en situation de
famine si les n premiers veulent tous produire quand le jeton passe
65. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 65
N producteurs / 1 consommateur
Technique du jeton circulant – deuxième solution équitable
• Idée : quand un processus Pi a le jeton et veut produire, il prend son rang
dans une file des requêtes de production. Il produit alors à deux conditions
– Il reste de la place dans le tampon
– Il n’occupe pas la place d’une requête plus prioritaire (ie. plus ancienne)
• Hypothèse : chaque producteur ne peut avoir au plus qu’une requête de
production en attente
• Nouvelle variable : COMPTEREQ
Compteur monotone croissant représentant le nombre de requêtes de
production, partagé en lecture et écrite par l’ensemble des processus
• L’info véhiculée par le jeton devient :
– DEBPROD
– IFINCONS
– COMPTEREQ
66. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 66
N producteurs / 1 consommateur
Technique du jeton circulant – deuxième solution équitable
• Fonctionnement : quand Pi reçoit le jeton
– S’il ne veut pas produire, il transmet le jeton à son successeur
– S’il veut produire
si n’a pas encore de requête en attente
il « prend son rang » : COMPTEREQ := COMPTEREQ + 1
Rang_i := COMPTEREQ
s’il a déjà une requête en attente, COMPTEREQ et Rang_i ne sont pas
modifiés
Pi va produire s’il a un « comportement équitable » et si la condition de
production est vérifiée (Cp’) DEBPROD – IFINCONS < n
67. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 67
N producteurs / 1 consommateur
Technique du jeton circulant – deuxième solution équitable
• Comportement équitable
nb de places libres (perçues par Pi) > nb de requêtes plus prioritaires
(anciennes) que celle de Pi
n - (DEBPROD – IFINCONS) > COMPTEREQ – 1 – DEBPROD
n – DEBPROD + IFINCONS > Rang_i – 1 – DEBPROD
n + IFINCONS > Rang_i – 1
(Cp’’) Rang_i – IFINCONS ≤ n
• Cp’’ Cp’⇒
(Cp’’) Rang_i – IFINCONS ≤ n
Avant que le processus ne produise Rang_i > DEBPROD
DEBPROS – IFINCONS < Rang_i – IFINCONS ≤ n
(Cp’) DEBPROD – IFINCONS < n
68. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 68
N producteurs / 1 consommateur
Technique du jeton circulant – deuxième solution équitable
• Exercice : simuler deux tours de jetons en considérant que tous les
producteurs veulent toujours produire
• Cf. annexe 5
70. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 70
N producteurs / 1 consommateur
Technique de distribution par duplication – présentation
• Retour au problème initial :
– m producteurs : P1, P2, … Pm
– 1 consommateur : C
– 1 tampon à n cases
• Idée : au lieu de transporter le
compteur DEBPROD au moyen
d’un jeton, cette variable peut être
dupliquée sur chaque site de
production Pi.
71. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 71
N producteurs / 1 consommateur
Technique de distribution par duplication – présentation
• Pour cela, il faut assurer deux types de cohérence vis-à-vis de DEBPROD :
1. Cohérence en lecture : en l’absence de message en transit dans le réseau,
toutes les copies de DEBPROD doivent avoir la même valeur
2. Cohérence en écriture : toute modification de DEBPROD doit être réalisée en
Exclusion Mutuelle (EM)
72. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 72
N producteurs / 1 consommateur
Technique de distribution par duplication – présentation
• Solutions
1. Tout site modifiant DEBPROD envoie une copie à l‘ensemble des autres sites
2. En solution centralisée :
les requêtes d’accès à DEBPROD sont placées dans une file d’attente qui
matérialise le fait que l’horloge unique du système permet de prendre en compte
la priorité (ie. est capable d’ordonnancer les requêtes)
En solution répartie :
Simuler une horloge commune = chaque site gère une horloge logique locale.
Tout envoi de message se fait en estampillant (datant) le message avec la
valeur de l’horloge locale.
Horloge logique
– assure une cohérence relative de l’horloge entre tous les systèmes qui interagissent
– beaucoup plus facile à mettre en œuvre que la synchronisation absolue de l’horloge
– permet de mettre en accord les processus sur l’ordre des évènements
73. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 73
N producteurs / 1 consommateur
Technique de distribution par duplication – hypothèses
• Solutions choisie : algorithme de Lamport
– Estampillage des messages
– Gestion d’une file d’attente distribuée
• Hypothèses
– H1 : tout site peut communiquer
directement avec tout autre site (maillage
complet)
– H2 : pas de perte de messages (délais
d’acheminement finis)
74. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 74
N producteurs / 1 consommateur
Technique de distribution par duplication – hypothèses
• Hypothèses (suite)
– H3 : non-déséquencement des messages (l’ordre de réception sur un site Sj
d’une suite de messages provenant d’un même site Si est identique à l’ordre
d’émission)
– H4 : la panne ou l’isolement d’un site est détecté et signalé aux sites qui tentent
de communiquer avec lui
75. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 75
N producteurs / 1 consommateur
Technique de distribution par duplication – notions de base
• Evènement = instruction exécutée par un processeur
– Envoi de message
– Réception de message
– Changement d’état local
76. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 76
N producteurs / 1 consommateur
Technique de distribution par duplication – notions de base
• Précédence causale
– Définition d’une relation de précédence entre les évènements d’un système
réparti : si a et b sont deux évènements, on dit que a précède b si d’une des
conditions suivantes est satisfaite :
• a et b sont générés sur le même si et a est antérieur à b
• a est l’envoi d’un message depuis un site et b la réception de ce même message sur
un autre site
– On note alors a b la relation « a précède b »
– Si a b et b c alors a c
– On parle de « précédence causale » car un évènement a ne peut avoir influencé
un évènement b que si a b
a « cause » b a⇒ b (la réciproque n’est pas –forcément– vraie )
77. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 77
N producteurs / 1 consommateur
Technique de distribution par duplication – notions de base
• Passé (historique) d’un évènement
– hist(e) = e U ensemble des évènements e’ tels que e’ e
– Seul le passé de e peut avoir influencé e
– hist(e24) = {e24, e23, e22, e21, e11, e31}
– On ne peut rien dire sur e24 et e32
78. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 78
N producteurs / 1 consommateur
Technique de distribution par duplication – notions de base
• Chaine causale
– Ensemble des e0 … en tels que i [1..n], e∀ ∈ i-1 ei
• Concurrence (ou indépendance causale)
a || b ¬ (a⇔ b) et ¬ (b a)
⇔ a hist(b) et b hist(a)∉ ∉
79. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 79
N producteurs / 1 consommateur
Technique de distribution par duplication – estampillage
• La technique des estampilles permet de définir un ordre partiel ou global
en effectuant une datation des évènements
• Horloge de lamport
– Chaque site Si gère une horloge logique hi (variable entière initialisée à 0)
– Lorsqu’un évènement a se produit sur Si
• hi := hi + 1
• La date de a, notée h(a) prend comme valeur hi
– Lors de l’émission d’un message m par le site Si
• hi := hi + 1
• Le message m est estampillé par (hi, i) et devient donc (m, hi, i)
hi est alors la date d’émission du message
– Lors de la réception d’un message (m, hi, i) par Sj
• hj := hj + 1
• hj = (max(hi, hj) + 1)
80. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 80
N producteurs / 1 consommateur
Technique de distribution par duplication – estampillage
81. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 81
N producteurs / 1 consommateur
Technique de distribution par duplication – estampillage
• Ordre partiel
– Les dates des évènements permettent d’établir un ordre partiel entre l’ensemble
des évènements constitués par les envois et les réceptions de messages
– Si a b, alors la date de a est inférieure à la date de b
– Partiel : plusieurs évènements peuvent être affectés à la même date
• Ordre total strict (noté <)
– Un site peut recevoir plusieurs messages avec la même date d’émission
– S’il doit établir un ordre total strict, on convient que entre deux messages qui ont
la même date d’émission, c’est celui qui provient du site de plus petit numéro qui
est antérieur à l’autre
– Si a et b sont deux avènements ayant lieu sur les sites i et j
(a<b) h(a)<h(b) ou (h(a)=h(b) et i<j)⇔
82. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 82
N producteurs / 1 consommateur
Technique de distribution par duplication – file d’attente partagée
• Le système gère une file d’attente dont une copie est disponible sur chaque
site
• Chaque message demandant l’accès à la Section Critique (SC) ou
informant de la libération de la SC sera diffusé à tous les sites
• Chaque site héberge un tableau de deux colonnes et d’autant de lignes qu’il
y a de processus
83. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 83
N producteurs / 1 consommateur
Technique de distribution par duplication – file d’attente partagée
• Trois types de messages
– Requête (Req) : message diffusé par un gestionnaire désirant entrer en SC (ie.
obtenir l’EM), vers tous les autres gestionnaires
– Libération (Rel) : message diffusé par un gestionnaire qui vient de recevoir du
processus auquel il est associé une information de restitution de la ressource
critique, vers tous les autres gestionnaires
– Acquittement (Ack) : accusé de réception envoyé par un gestionnaire à un autre
gestionnaire dont il vient de recevoir un message de type requête
• Structure d’un message
– Type_message (date_évènement, n°_site_émetteur)
84. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 84
N producteurs / 1 consommateur
Technique de distribution par duplication – file d’attente partagée
• Chaque site possède un tableau TAB[1..m](où m est le nombre de sites)
dans lequel le producteur Pi inscrit à l’indice j
– (Req, h) lorsqu’il reçoit un message de type requête estampillé (h, j)
– (Rel, h) lorsqu’il reçoit un message de type libération estampillé (h, j)
– (Ack, h) lorsqu’il reçoit un message de type acquittement estampillé par (h, j),
mais ceci uniquement dans le cas où ce qui serait effacé ne correspond pas à un
message de type requête. Sinon le message d’acquittement est ignoré
– Pi range également dans TAB[i] les informations correspondant aux messages
qu’il envoie, dans les mêmes conditions que ci-dessus
85. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 85
N producteurs / 1 consommateur
Technique de distribution par duplication – file d’attente partagée
• Pi veut entrer en section critique
– Pi diffuse Req(hi, i) à tous les aures sites
– TAB[i] := (Req, hi)
• Pi quitte la section critique
– Pi diffuse Rel(hi, i) à tous les aures sites
– TAB[i] := (Rel, hi)
• Pi reçoit un message Req(hj, j)
– Pi envoi Ack(hi, i) à Pj
– TAB[j] := (Req, hj)
• Pi reçoit un message Rel(hj, j)
– TAB[j] := (Rel, hj)
• Pi reçoit un message Ack(hj, j)
– Si TAB[j].type = Req skip
– Sinon TAB[j] := (Ack, hj)
86. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 86
N producteurs / 1 consommateur
Technique de distribution par duplication – file d’attente partagée
• Un gestionnaire Pi qui désire obtenir la section critique pour le
processus dont il gère le contrôle ne peut le faire que si TAB[i] est le
message le plus ancien noté dans TAB selon la relation d’ordre
définie par les estampilles, c’est-à-dire si
j [1..m], j ≠ i∀ ∈
(TAB[i].date < TAB[j].date) ou (TAB[i].date = TAB[j].date et i < j )
Pi peut entrer en SC⇔
• Initialisation identique pour chaque site
i [1..m] TAB[i] := (rel, 0)∀ ∈
87. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 87
• A quel moment P1 et P2
entrent-ils en section
critique ?
• Cf. annexe 7
N producteurs / 1 consommateur
Technique de distribution par duplication – exemples
88. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 88
• Préciser les horloge
logiques et estampiller les
messages
• A quel moment P1, P2 et
P3 entrent-ils en section
critique ?
• Cf. annexe 7
N producteurs / 1
consommateur
Technique de distribution par
duplication – exemples
89. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 89
N producteurs / 1 consommateur
Technique de distribution par duplication – algorithme de Lamport
• Cf. annexe 8
90. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 90
N producteurs / 1 consommateur
Technique de distribution par éclatement – présentation
• Retour au problème initial :
– m producteurs : P1, P2, … Pm
– 1 consommateur : C
– 1 tampon à n cases
• L’algorithme de Lamport utilise des variables locales reliées par des
contraintes globales
• Idée : diminuer fortement les contraintes globales
on divise les places du tampon entre chaque producteur
• Un quota = ni de places libres dans les tampon est alloué à chaque Pi
• Il n’existe plus de compétition entre le Pi pour l’accès au tampon
91. Algorithmique distribuée - ENSSAT - IMR2 - 2010-2011 91
N producteurs / 1 consommateur
Technique de distribution par éclatement – condition de production
• La condition de production pour Pi s’écrit alors :
(Cpi) DEBPRODi – IFINCONSi < ni
• DEBPROBi : nombre de productions commencées par Pi
• IFINCONSi : copie de FINCONSi, le nombre de consommations dans le
quota alloué à Pi
• Cpi Cp⇒