• Aucun résultat trouvé

Algorithmes de mise en œuvre des systèmes répartis

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithmes de mise en œuvre des systèmes répartis "

Copied!
136
0
0

Texte intégral

(1)

Systèmes Distribués

Techniques et Algorithmes de mise en œuvre des systèmes répartis

(2)

Algorithmes de mise en œuvre des systèmes répartis

1. GENERALITES

(3)

ν ν

S S y y s s t t è è m m e e s s r r é é p p a a r r t t i i s s : : R R é é s s e e a a u u

ν ν

M M a a ch c hi i n n e e s s , , p p e e r r s s on o nn ne es s , , p p r r oc o ce e s s s s u u s s , , « « ag a g e e n n t t s s » » … … l l oc o ca al li i s s é é s s à à de d es s e e n n d d r r o o i i t t s s d d i i f f f f é é r r e e n n t t s s . .

réseau

(4)

ν ν LeLess pprroocecesssususs cocoooppèèrreenntt ppoouurr rérégglleerr unun prproobbllèèmmee ununiiqquuee.. PaParr écéchhaangngee ddee memessssaaggeess

FaFaiibblleemmeenntt cocouuppléss sosouuvvenentt aasysynncchhroronnee

DDélélaaiiss aarrbbiittrraaiirreess

ppaass dd ’hhoorrllooggee gglloobbaallee

ν ν OOppttiimmiissaattiioonn ddeess ttââcchheess ((ssiitteess ssppéécciiaalliissééss)),, rrééssiissttaannccee aauuxx ppaannnneess ...

ν

ν DiDissttriribbuuttiioon n d’d’unun ccaallccuull..

(5)

message de contrôle

• L ’observation n ’est possible que par le biais de messages de contrôle (avec des temps de transmission arbitraires).

• Les processus ne peuvent être observés simultanément.

• Pas d ’horloge globale.

• suivi d ’un calcul ?

ν ν ExExeemmplplee dede prproobbllèèmme e : : l’l’obobsseerrvvaattioion n d’d’unun ccaallccuull didissttrriibbuuéé

(6)

Compte A : 4500

Compte A : 0

• Pas de vision globale.

• Pas de temps commun.

• Combien a-t-il d ’argent ?

ν ν ExExeemmplplee : : InIntteerrcoconnnneexxiioon n babannccaaiirere ::

(7)

ν

ν AuAuttrree exexememplplee : : l’l’eexxccllususioion n mumuttuueellllee..

νν CaCass cecennttrraalliissé é : :

ν ν LaLa clcleeff eesstt ununee vvaarriiaabbllee cocommmmununee ((vvererrroouu))..

(8)

νν CaCass didissttriribbuuéé : :

ν ν ToTousus lleess écéchhaannggeess d’d’ininffoormrmaattiioon n sese fofonntt ppaarr memessssagageess. .

(9)

vert

rouge

rouge Observateur 1

Observateur 22

sync mess comportement autonome

vert

temps

Dans quelle mesure cette observation est fausse ?

• Chaque feu passe au rouge de façon autonome.

• Un feu ne passe au vert que si l ’autre est rouge.

• Les temps de transfert sont arbitraires.

(10)

Cohérence temporelle :

(m2,A)

B

C

(m3,B)

∆t

• C peut voir (m1,A) avant ou après (m3,B).

• Peut influer sur le déterminisme de l ’algorithme global ! A

(m1,A)

• A envoi un message à C puis à B

• B réagit en envoyant un message à C.

(11)

Résumé :

Distribution :

Partage (donnée ressources)

Synchronisation + Communication Compétition

Coopération (programme) Coordination

: Sans mémoire commune.

: Sans horloge globale.

(12)

Ce qui est distribué et les problèmes associés :

1) Distribution des données : duplication et/ou partitionnement - problème de cohérence des données à un instant.

- problème d’accès (exclusion mutuelle répartie).

- problème de définition optimale des répartitions.

2) Distribution des calculs :

- problème de blocage « inter-blocage ».

- problème de terminaison d’un calcul.

- de coordination (rendez-vous).

3) Distribution des algorithmes de mise en œuvre de la distribution - gestion de l’exclusion mutuelle sans mémoire commune.

- gestion de la cohérence des données dans le temps.

- détection de la terminaison et de l’interblocage.

(13)

L’algorithmique distribuée :

Eléments de base : processus ou sites et voies de communication

Processus 1

Processus 2

Processus 3

(14)

Voies de communication (ou liaison, ou canaux)

Structures :

Arbre : chaque processus communique avec ses fils et son père

Maillage complet : chaque processus communique avec tous les processus

Attention : Ne pas confondre la structure du réseau local avec la structure de communication de l’algorithme distribué.

Anneau : chaque processus

communique avec ces deux voisins .

Etoile : un processus particulier peut communiquer avec tous les autres (hiérarchie).

(15)

Voies de communication :

Propriétés comportementales : Hypothèses de simplification classiques

H1 : La transmission sur la voie se fait sans duplication de message.

H2 : La transmission se fait sans altération des messages.

H3 : Pour tout couple de processus communicants, l’ordre de réception des messages est identique à leur ordre d’émission Æ pas de déséquencement.

H4 : Le délai d’acheminement des messages est fini (bien qu’aléatoire) Æ pas de perte.

H5 : Le délai d’acheminement est borné.

(16)

Processus :

Programme séquentiel, instructions classiques (tanque faire, pour tout ….)

Réceptifs à des événements (A la réception de « message » faire : …)

Emetteurs d’événements (envoyer(« message »)).

Choix non déterministes : si deux événements arrivent en même temps.

Il existe des langages dédiés : CSP, ADA, PDIL

(17)

Processus : degrès de répartition, niveau de symétrie :

non symétrie : Texte différent pour chaque processus (client-serveur)

• symétrie de texte : Même texte, mais référençant les processus explicitement Æ chaque processus peut avoir un comportement dépendant des messages reçus et de son identité

Serveur :

gère X

attendre demande(X) envoyer(X) à client

Client :

demander(X) attendre (X) :

P1

Réception de « message » Si a>3 envoyer message à P2 Calculer a

P2

Réception de « message » Si a>3 envoyer message à P1 Calculer a

(18)

symétrie forte : Même texte mais ne référençant plus explicitement les processus Æ pour une même succession de messages, ils ont tous le même comportement.

symétrie total : Même texte indépendant des messages Æ ils ont tous le même comportement.

P1

Réception de X Y := f(X)

Emettre Y

P2

Réception de X Y := f(X)

Emettre Y

Fourmis1

Si obstacle : contourner Si nourriture : manger Si prédateur : mourir Avancer

envoyer (position)

Fourmis2

Si obstacle : contourner Si nourriture : manger Si prédateur : mourir Avancer

envoyer (position)

(19)

Qualités d’un algorithme distribué :

• Degrès de répartition : rôle joué par chaque processus Æ niveau de symétrie

• Résistance aux pannes : plus un algorithme distribué est symétrique, plus il possède une grande résistance aux pannes.

• Hypothèses sur les voies de communication : Moins il y a d’hypothèses, plus l’algorithme est généralisable.

• Trafic engendré.

• Absence de blocage.

• Détection de terminaison.

(20)

Exemple de deux techniques de distribution

1) Le calcul diffusant (diffusing computation) : très utilisé pour faire des maths.

Cas simple : accusé de réception = diffusion d’une information

Cas complexe : chaque processus exécute une partie d’un algorithme

Structure arborescente, non-symétrie (au moins pour le processus racine), attente.

Processus racine

Processus noeud

Processus feuille

Processus feuille (1) go !

(2) go !

(2’) go ! (3) ok !

(3’) ok ! (4) ok !

(1’) go !

(n) ok !

(21)

1) L’estampillage (Lamport) : cohérence temporelle

C consomme les messages dans l ’ordre de leurs

estampilles t=1

A

(m2,A,1)

t=1->2 B

t=1->3 C

(m3,B,2) (m1,A,1)

Estampille = date à laquelle le message a été envoyé

A la réception, B met son

horloge à 1 A l émission, B incrémente

son horloge

2 estampilles identiques ?

hiérarchie entre processus

ex : (B,2>A,2).

(22)

Développer des algorithmes distribués

- Définir leurs caractéristiques :

- Sécurité : ce qui ne doit pas arriver - Vivacité : ce qui doit arriver

- Trouver l'algorithme non distribué - Vue Abstraite

- Pseudo-code

- Trouver l'algorithme distribué - Vue concrète

- Pseudo code -> code final

(23)

Sécurité versus Vivacité Sécurité : ce que l'algorithme empêche

Exemple de l'exclusion mutuelle : deux utilisateurs ne peuvent prendre ensemble la ressource.

Solution possible : ne jamais l'attribuer

Vivacité : ce que doit permettre l'algorithme

Exemple de l'exclusion mutuelle : si un utilisateur veut la ressource et qu'elle est disponible, il doit l'avoir.

Solution possible : lui donner sans réfléchir

Difficulté : Sécurité + Vivacité .

(24)

Exécution atomique

Algorithme distribué = fonctions atomiques

- Exécutée en section critique / autres fonctions du processus - non interruptible au sein du processus

- ne laisse pas le temps aux autres fonctions de modifier une variable

- l'arrivée d'un message n'est pris en compte qu'avant ou après son exécution

- plusieurs actions atomiques peuvent être exécutées en parallèle si elles ne font pas partie du même processus

Fonction particulière interruptible

- Attente d'un événement ou d'un changement d'état provoqué par d'autres fonctions - Pseudo – code : instruction attendre

(25)

Suite du cours :

Ce qu'on y trouve

- aspect "théorique"

- Compétition - Synchronisation - Etat global

- variables et ensembles - codage "générique"

- pseudo code : instructions envoyer, recevoir, attendre, tant que , pour, si

-

Ce qu'on n'y trouve pas - codage "spécifique"

- C : socket thread (signal) - Adda

- OCCAM : par, seq, ?, ! - Noyaux : OS9,VXWorks

(26)

Bilan de l’introduction :

• Algorithme distribué Æ Communication entre processus.

• Pas de mémoire commune Æ problème de représentation globale du programme

• Distribution des données, des calculs

• Distribution des algorithmes de distribution

- exclusion , élection, synchronisation, surveillance ….

• Algorithmes dépendant de la topologie.

• Systèmes complexes : Besoin de validation (réseaux de Petri, systèmes de transitions, logique temporelle ..)

(27)

2. Compétition : l’exclusion mutuelle répartie

(28)

Positionnement du problème

l’objectif :

Accorder un privilège à un processus parmis n (accès à une ressource non partageable…).

Problèmes spécifiques :

• Equité (vivacité) : Tout processus ayant besoin de la ressource y aura accès au bout d’un temps fini Æ absence de blocage.

• Sûreté : A tout instant il y a au plus un processus accédant à la ressource.

• Minimiser les échanges.

(29)

Modélisation du problème grâce aux RdP

T1

Fonctionnement sans besoin de la ressource : dehors_1

demande_1 Demande de ressource

Processus 1

T2

dehors_2 demande_2

Demande de ressource Processus 2

critique_1 critique_2

(30)

RdP de la Solution centralisée :

T1

demande_1

Demande de

ressource T2

demande_2

Demande de ressource critique_1

critique_2 /V

Entre_1

Sort_1

Entre_2

Sort_2

(31)

Implantation Centralisée solution matériel : Verrou et fonction test&set :

Test&set = opération atomique Æ Impossibilité qu’entre consultation et affectation il y ait une autre consultation, instruction de base d’un µp : échanger(registre,mémoire)

Processus i :

Init : V = 0

//Demande_i

Attendre jusqu’à ce que test&set(V) = 0

//Entre_i

<Critique_i>

….

//Sort_i reset(V)

test&set(V) temp = V V=1

return(temp) reset(V)

V=0

(32)

Echec de cette solution en architecture distribuée

V ne peut être une variable commune, sa consultation peut prendre du temps

test&set ne peut plus être atomique

Processus 1 V

Processus 2 consultation

modification

P1

P2 V

consultation

∆T

∆T

∆T

modification

Section critique test&set(V)

Section critique

(33)

Solution basée sur les messages « alternating mutex algorithm »

Problème : évolution globale, blocage.

T1

demande_1

Demande de

ressource T2

demande_2

Demande de ressource critique_1

critique_2

dehors_1

dehors_2 Message12

Message21

(34)

Exemple d’algorithme d’exclusion mutuelle fonctionnant en architecture distribuée

priorité au processus 1 (marquage initial)

Repos demande1

autorise1

Silence

Attente

AcExt1 critique

ReqExt1 ReqExt2

Attente

AcExt2 critique2

Silence

autorise2

demande2 Repos

equit1 equit2

(35)

Version pseudo code : autorise_i et req_j sont des flags //Acquisition de la section critique

si (autorise_i==1)

entrer en section critique ou (non déterministe)

si (req_j = 1)

autorise_i = 0

envoyer accord(i) //mode silence

req_j = 0 aller en 2 fsi

sinon :

2) envoyer requête(i) attendre accord(j)

Entrer en section critique ……

Fin de section critique autorise_i =1

fsi

// réception de Requête(j) req_j = 1

si (autorise_i==1) autorise_i=0

envoyer accord(i) req_j = 0

fsi

(36)

n processus : RdP Colorés

Couleurs :

C = {<ci>, 1≤i≤n}

O = {<oi>, 1≤i≤n}

Fonctions de changement de couleur :

f1(<ci>) = <oi>

f2(<oi,cj> )= <cj>

f3(<oi,cj> )= <ci>

Repos demande

autorisé

silence

attente1

Accord critique

Requete

<c1>

: :

<cn>

<c2>

: :

<cn>

<c1>

f2

<C>

<C>

<C>

f1

<oi, ci> f3

(37)

Problème d’équitabilité

Deux classes d’algorithmes

- Algorithmes fondés sur les permissions Permissions individuelles

Permission d’arbitre + : rapidité

- : compléxité

- Algorithmes fondés sur un jeton Mouvement perpétuel : + : simplicité

- : temps d’attente

Compromis : diffusion du jeton.

(38)

Algorithmes fondés sur les permissions.

Notation : i est un processus ayant besoin de la ressource

Ri est l’ensemble des processus à qui i doit demander la permission

Permissions individuelles :

P1 et P5 veulent la section critique Æ exclusion mutuelle car P5 demande à P1 donc P1 ne prendra pas la section critique s’il a autorisé P5.

Sûreté : ∀(i,j) : i∈Rj ou j∈Ri P1

R1={2}

P3

R3={1,5}

P2

R2={3,1}

P5

R5={1,2,4}

P4

R4={1,2,3}

demande

autorisation ou interdiction

(39)

Permissions d’arbitres

P1 et P5 veulent la section critique Æ exclusion mutuelle par « l’arbitre » P3, qui ne l’accordera qu’à l’un des deux.

Sûreté : ∀(i,j) : Rj∩Ri ≠∅

P1

R1={3,4}

P2

R2={1,4,2}

P3

R3={2,4}

P4

R4={3,1}

P5

R4={2,3}

demande autorisation

(40)

L’algorithme de Ricart et Agrawala : (permission individuelle)

Avantage :

Equité (l’attribution de la ressource commune s’effectue dans l’ordre des demandes) Variables de chaque site i :

Var étati: {dehors, demande, critique} init à dehors hi, lasti : entier croissant init à 0.

prioritéi : booléen ;

attendusi, différéi : ensemble de sites init à ∅

hi est une horloge logique, rappel : (h,i)<(k,j) ⇔ (h<k ou (h=k et i<j)) lasti : date de la dernière demande de i

attendusi : liste des sites devant fournir une reponse différéi : liste des sites mis en attente par i.

(41)

Quatre fonctions atomiques : (sauf la procédure attendre)

Libérer : (sortie de S.Critique) etati := dehors ;

∀j ∈ différéi : envoyer permission(i) à j ; différéi := ∅

Acquérir :

etati := demande ;

hi := hi + 1 ; lasti := hi ; attendusi := Ri

∀j ∈ Ri : envoyer requête(lasti,i) à j ; attendre(attendusi = ∅) ;

étati := critique ;

Réception de requête(k,j)

hi := max(hi, k) ;

prioritéi := (étati≠dehors) et (lasti,i)<(k,j) ; si prioritéi alors différéi := différéi∪{j}

sinon envoyer permission(i) à j fsi ;

Réception de permission(j) attendui := attendusi-{j}

(42)

sûreté de l’algorithme de Ricart et Agrawala

Deux processus i et j peuvent-ils être en section critique.

Pour cela, deux messages requête(h,i) et requête(h,j) ont été envoyé et deux messages permission(i) et permission(j) ont été reçu.

Cas 1) envoi d’une permission suivie d’une requête (processus j)

i

j

requête(h,i)

permission(j) requête(k,j)

lastj>hj hjh

dehors

k=hj k>h

lasti=h k>lasti(lasti,i)<(k,j)

étati=demande

Permission refusée 2

10 10 11

11

11>2 2

(43)

Cas 2) envoi « simultané » de 2 requêtes

i

j

requête(h,i)

requête(k,j)

test1 : (k,j)<(h,i)

hi=h

étati=demande

étatj=demande

hj=k

test2 : (h,i)<(k,j)

(test1= ¬ test2)⇒une seule permission accordée lastj=k

lasti=h

(44)

Vivacité de l’algorithme de Ricart et Agrawala

Chaque requête possède une estampille distincte

La requête d’estampille la plus faible sera toujours accordée

Tout processus rentrant en section critique en sort au bout d’un temps fini

⇒ Vivacité assurée

Trafic :

Nb messages :

ƒ Une utilisation de la section critique requiert 2(n-1) messages

Temps :

ƒ Si la section critique n’est pas utilisée, il faudra attendre 2T pour qu’un processus puisse l’acquérir. T = temps de transfert d’un message.

ƒ Si elle est utilisée, il faudra attendre T, une fois sa libération effectuée (temps de transfert du message d’autorisation)

(45)

Robustesse vis-à-vis du déséquencement :

Cas critique : déséquencement des permissions

Cqs où hi>hj (i prioritaire)

i

j

hi=α

hj=β

requête(α+1,i)

permission(j)

critique

requête(α+1,i)

permission(j)

requête(β+1,j)

hj=β+1 lastj=β+1

Jusqu’à ce que hi>lastj

(46)

Structure des liaisons

maillage complet bi-directionnel.

peut s’adapter à d’autres structures, au détriment d’un surplus de trafic. Exemple : structure en anneau : n(n+1)/2 messages pour une utilisation de la section critique.

Possibilité d’optimisation

Si l’on connaît δ, temps de transfert maximum entre deux sites.

- Ne pas envoyer de permission positive.

- Envoyer un refus de permission, suivi d’une permission une fois la section libérée.

- Attendre un refus de permission durant 2δ, puis considérer que celle-ci est acquise.

toutes les permissions sont accordées : nb de messages pour 1 utilisation = n-1 aucune permission accordées : nb de messages pour 1 utilisation = 3(n-1)

Æ interessant si δ petit

(47)

Problème des horloges non bornées :

La valeur d’une variable informatique ne peut croître indéfiniement.

Æ les horloges possèdent un « modulo ».

Comparaison d’horloges finies modulo 8 :

hi 1 2 3 4 5 6 7 8 1 2

hj 1 1 1 1 1 1 1 2 2 2

comparaison = > > > > > > > < =

L’algorithme est perdu car hj est en réalité toujours < hi

(48)

Problème des horloges non bornées

Connaissance de l’écart Max entre 2 horloges, exemple ±2 :

hi 0 1 2 3 3 3 4 4 5

hj 0 0 1 2 3 4 5 6 7

comparaison = > > > = < < < <

Les horloges peuvent être implantées modulo 4 :

hi 0 1 2 3 3 3 0 0 1

hj 0 0 1 2 3 0 1 2 3

comparaison = > > > = < < < <

Avec : 1>0 ; 2>0 ; 2>1 ; 3>1 ; 3>2 ; Mais : 0>2 ; 0> 3 ; 1>3 ; 1>0 ;

(49)

Borne des Horloges de l’algorithme de Ricart et Agrawala

Constat : Il ne peut y avoir deux requêtes successives par un processus sans qu’il n’ait reçu une permission.

Pour n processus :

Il y a au maximum un écart de (n-1) entre la requête et l’autorisation

Il y a au maximum un écart de (n-1) entre deux requêtes

La différence entre 2 horloges logiques est de ±(n-1) modulo = 2(n-1)

hi

hj

hk

0

req(i,1) 1

req(j,2) 1

0 2

2

0 req(k,3)

Cas extrème : tous les processus en attente d’autorisation : horloges bloquées !

Permission(j)

(50)

Algorithmes similaires :

Carvalho et Roucairol :

Si un site veut la section critique plusieurs fois de suite, alors qu’aucun site ne l’a demandé, il n’est pas obligé de faire plusieurs requêtes.

Adaptatif : les sites peuvent se déclarer consommateurs ou non consommateurs

potentiels de la ressource durant l’évolution de l’algorithme (l’ensemble Ri évolue dans le temps).

Les horloges ne peuvent plus être bornées.

Chandy et Misra : Adaptatif, Variables bornées,

L’identité des sites n’est plus utilisée, Algorithmes à permission d’arbitres

(51)

Algorithmes fondés sur l’unicité d’un jeton

Algorithme de Le Lann (mouvement perpetuel)

Le jeton tourne indéfiniment de processus en processus.

Un processus demandeur porteur du jeton utilise la ressource commune avant de rendre celui-ci.

Simple.

Trafic inutile

Si la section critique n’est pas utilisée il faudra attendre jusqu’à (n-1)T pour qu’un processus puisse l’acquérir Æ LENT ! !

Processus i jeton Processus j Processus k

(52)

Algorithme à diffusion (le jeton est distribué au demandeur)

Un processus demandeur lance une requête.

Le jeton possède l’info « combien de fois ai-je été consommé par Pn ».

Chaque processus compte le nombre de requêtes reçues des autres processus.

un processus p est demandeur si

jeton[p] < tab[p] (le jeton est alors envoyé à p) Processus i

Processus j

Processus k j

k 0 1

i k

1 1

i j

1->2 2

i j k 1 2 1 requête(i)

requête(i) tab

tab

tab

jeton

(53)

Algorithme à diffusion (suite).

Pas de blocage

Vivacité : Possibilités de famine : toujours les mêmes servis.

Solution : chaque processus opère ses tests dans un ordre différent,

Exemple : chaque processus i effectue ses tests dans l’ordre i+1, i+2 …n, 1, ..i-1

Nombre de messages pour une utilisation de la section critique : de 0 à n.

Delai durant lequel la section critique est inutilisée alors qu’elle est demandée : 0 à 2T

(54)

Répartition d’un sémaphore :

Rappel : Sémaphore centralisé : partage de n ressources Processus1

P(S) ;

Utiliser ressource ; V(S)

Processus2 Processusj

Sémaphore S P(S),

V(S)

P(S), V(S)

P(S), V(S)

P(S) : attendre (S>0) ; S=S-1

V(S) : S=S+1

(55)

Sémaphore distribué : principe

P(S) doit être exécuté en section critique Æ exclusion mutuelle.

V(S) n’est pas critique, S doit être distribué (jeton).

Processus 1 nbVs1

P(S) V(S)

Processus 2 nbVs2

P(S) V(S)

Processus n nbVsn

P(S) V(S)

Jeton : nbPs

attendre (S>0)

#P(S) < S0 + #V(S)

P(S) : acquérir jeton

attendre (nbPs<S0 + nbVi) ; nbPs=nbPs+1

libérer jeton

S = #V(S) - #P(S) + S0, (#P ≈ nb exécution de P, S0 nb ressources)

V(S) : envoyer incr Réception incr : nbVi = nbVi+1 incr

incr jeton

distribué

(56)

Sûreté :

nbVsi ≤ # V(S) et nbPs = # P(S )

Donc :

(nbPs<(S0 + nbVi)) ⇒ (#P(S) < (S0 + #V(S)).

Le test est sûr vis-à-vis d’un sémaphore centralisé

Vivacité : dépend de l’algorithme de déplacement du jeton gérant l’exclusion mutuelle d’accès à P(S).

Trafic Important (trafic de l’algorithme d’exclusion mutuelle lié à P + trafic lié à V) Æ Les sémaphores répartis ne sont intéressants que lorsqu’une simple exclusion mutuelle ne suffit pas.

(57)

Problèmes plus complexes :

Lecteurs-écrivains réparti

Exclusion mutuelle à deux types d’opérations « lire » et « écrire » dotée de règles d’exclusions spécifiques.

Æ Adaptation des algorithmes d’exclusion mutuelle répartie

(58)

Problèmes plus complexes :

Allocation répartie de ressources

Problème spécifique : l’interblocage : Scénario : 1Æ3Æ ?

Solutions :

- demande incrémentale - demande simultanée

Processus 1 : :

1 requérir R1 :

2 requérir R2 :

libérer R1 :

libérer R2

Processus 2 : :

3 requérir R2 :

4 requérir R1 :

libérer R1 :

libérer R2

Processus n : :

(59)

Demande incrémentale :

Hiérarchie des ressources R0<R1<R2….

Un site ne peut demander une ressource Ri que s’il a déjà obtenu toutes les ressources (dont il a besoin durant la session), qui sont inférieures à Ri.

Chaque ressource gère une file d’attente fifo des sites qui la réclament.

Le chemin 1Æ3Æ….. n’est plus possible !

Simple, mais peu performant (beaucoup d’attente).

(60)

Demande simultanée : principe

Estampillage des messages de requête avec horloge logique (exclusion mutuelle de Ricart et Agrawala)

Cas pour une ressource en M exemplaires, utilisée ki fois par chaque processus i.

Processus 1 Utilisé1

P2 P3 M M Différé{}

Processus 2 Utilisé2

P1 P3 M M Différé{}

Processus 3 Utilisé3

P1 P2 M M Différé{1}

requête(h,1)

requête(h,1)

Pas interessé : libre(3,M) Ou pas prioritaire

Prioritaire : libre(3,M-k3) Injection de 1 dans différé, et envoie de libre(3,M) à 1 suite à la libération des ressources

M - utiliséi[j] ki Æ consommation des ki ressources

Lors d’un envoi de requête, utiliséi[j] := M (pire des cas)

Lors d’une réception de libre(j, N), utiliséi[j]=utiliséi[j]-N

Généralisation possible à plusieurs types de ressources

(61)

3. Coordination : La synchronisation répartie

(62)

Coordination par rendez-vous

Un rendez-vous multiple r = {i,j,k}

Processus i Invoquer r

Invoquer r

Invoquer r

Rendez - Vous.

Processus j

Processus k

temps

(63)

Choix non déterministe entre plusieurs rendez-vous

Problèmes spécifiques :

Coordination synchrone : si un processus s’engage dans un rendez-vous, tous les processus concernés doivent s’y engager.

Exclusion : un processus ne peut être que dans un rendez-vous à la fois.

Processus i Invoquer r1 ou r2

Invoquer r1 ou r4

Invoquer r3 ou r1

Rendez - Vous

r1 Processus j

Processus k

temps

(64)

Principe de la solution pour un rendez-vous : Sémaphores privés.

Si un processus i veut prendre le rendez-vous, il incrémente le sémaphore des autres sites : ∀x ∈ r , x≠i : V(Sx).

Un processus i peut entrer en rendez-vous, s’il a pu décrémenter Card{r}-1 fois son propre sémaphore :

faire Card{r}-1 fois P(Si)

entrer en rendez-vous

Processus j Processus i Processus k

Sj = 1 V(Sj) V(Sk) Si = 0 Sk = 1

(65)

Principe de la solution centralisée pour n rendez-vous demandés simultanément

wi : nombre de fois où i a été demandeur

ni : nombre de fois où i est entré en rendez-vous

invariants : chaque processus ne s’engage que dans un rendez-vous à la fois

∀i : ni ≤ wi ≤ni+1

un rendez-vous rj ne peut avoir lieu que si tous les sites sont prêts

∀rj : (∀i ∈rj : wi = ni +1) ⇔ rj peut avoir lieu.

Processus controleur wi=1

ni=0 wj=1 nj=0 wk=0 nk=0

r1{i,j}

r2{j,k}

r3{i,j,k}

Processus i Processus j Processus k prêt(i)

prêt(j) ok(r1)

(66)

Principe de la solution distribuée pour n rendez-vous demandés simultanément

Le jeton assure l’exclusion mutuelle des contrôleurs

Quand un contrôleur envoie ok(rj), il incrément nx(j)

Sens des modifications wi=1Æreq(i)Ænbreqn(i) nx(i) Æok(rl)Æn(i)

Processus i

ni=0 ; wi=1 ; ctl_par{z,x}

Processus j

nj=0 ; wj=1 ; ctl_par{x,y,z}

Processus k

nk=0 ; wk=1 ; ctl_par{z,y}

Processus controleur z

rdv_ctl_z{r1{i,j},{r2{i,k}}

proc_ctl_z{i,j,k}

nbreqz(i)=1 nbreqz(j)=1 nbreqz(k)=0

Processus controleur x rdv ctl x{…….}

Processus controleur y

Circulation jeton (mutex)

Jeton{nx(i)=…, nx(j)=…,nx(k)=…}

prêt(i) prêt(i)

ok(r1)

nx(i) : nombre de fois où OK(r…) a été envoyé à i

(67)

Coordination par maintien d’un invariant

Exemple d’invariant

Producteurs consommateurs :

#autorisation(produire) - #terminer(consommer)≤k (taille du buffer)

#autorisation(consommer) - #terminer(produire) ≤ 0

Cas général, Synchronisation :

= <

m i

k xi

i

1

α . (αi = constantes)

Pour maintenir un invariant, les processus doivent évaluer une condition avant de modifier une des variables de l’invariant. (avant de produire, il faut vérifier qu’il y a de la place dans le buffer)

Problème spécifiques :

Sûreté : si la condition est fausse, aucun processus ne peut l’évaluer à vraie

Vivacité : Si une condition est vraie, tous les sites doivent la voir vraie au bout d’un temps fini.

(68)

Cas des variables liées à un processus :

xi, xj et xk sont des compteurs à évolution monotone et croissante

Vue abstraite, Conditions Abstraites

Processus i Condition : xi-xj-xk<k xi

Processus j Condition : xj-xi-xk<k xj

Processus k Condition : xk-xj-xi<k xk

(69)

Minorants et mise à jour retardée : condition de type « mk(xi) valeur » Condition Concrète (xi≥ valeur ) ⇒ Condition Abstraite (mk(xi) ≥ valeur)

Vue Concrète :

mn(xm) xm Æ MajR

Sûreté :

xk-mk(xi)-mk(xj) <k ⇒xk-xi-xj<k Processus i

xi, mi(xj), mi(xk)

Processus j

xj

Processus k Condition :

xk-mk(xi)-mk(xj)<k xk, mk(xi), mk(xj) mk(xj)

mi(xj)

(70)

Majorant et mises à jour anticipées : condition de type « Mk(xi) valeur »

Si Mi(xj)xj alors (Condition Concrète Condition Abstraite)

Il faut au contraire que Mi(xj) xj Æ MajA xi+Mi(xj)-mi(xg) < k

xj ≤Mi(xj), MajA xg≥mi(xg) MajR

Vue abstraite : i

xi+xj-xg<k xi

i

xi+Mi(xj)-mi(xg)<k xi

Vue concrète :

⇒ xi+xj-xg<k

(71)

Mise à jour anticipée : implantation

Possibilité de blocage Æ si l’incrémentation de xi est dépendante de Mi(xj)<k) Algorithmes spécialisés limitant le crédit n.

Compteur à évolution quelconque

On décompose l’évolution d’un tel compteur par le biais de deux compteurs (un compteur d’incrémentation et un compteur de décrémentation). Les algorithmes précédent sont ensuite utilisables.

j

……..

……..

envoyer(inc(j,n)) attente(ok)

xj = xj+n

i

reception(inc(j,n)) Mi(xj)= Mi(xj)+n envoyer(ok)

inc(j,n)

ok

(72)

Variables non liées à un site

Exemple : vue abstraite de la gestion d’un parking

Invariant à maintenir : es+p (capacitée du parking)

Avant d’autoriser une entrée, un processus vérifie que e<s+p Entrée/sortie1

Entrée : e=e+1 Sortie : s=s+1

Entrée/sortie2 Entrée : e=e+1 Sortie : s=s+1

Entrée/sortie2 Entrée : e=e+1 Sortie : s=s+1

(73)

Technique d’éclatement

Chaque site i transmet sa valeur ei et si

(MajR pour si et MajA pour ei)

Vue Concrète :

Problème : beaucoup de messages Entrée/sortie1

e=

i

ei s=

i

si e1,s1

Entrée/sortie2 e=

i

ei s=

i

si

e2,s2 Entrée/sortie3

e=

i

ei s=

i

si e3,s3 e3, s3

e3, s3 e1, s1 e1, s1

e2, s2 e2, s2

(74)

Partitionnement et contrôle isarithmique :

Chaque processus i gère une partie des places pi.

Avant d’autoriser une entrée, un processus vérifie que ei<si+pi p=pi

Blocage si les voitures arrivent « par un processus » et partent « par un autre ».

solution Æ Chaque pi évolu dynamiquement à l’aide de messages de crédits, en fonction d’un seuil, afin d’éviter les blocages.

Entrée/sortie1

e1,s1,p1

Entrée/sortie2 Trop de place p2=p2-n

e2,s2,p2 Crédit(n)

p1=p1+n

(75)

Coordination par construction d’un temps virtuel

Objectif :

Avoir une base de temps permettant de faire abstraction des problèmes liés aux temps de transit des messages.

Implanter des algorithmes distribués comme si le système était global.

Exemple : exy sont des « événements » devant être partagés par deux processus Pi et Pj.

En non réparti, les deux processus verraient ei1, ej1, ej2, ei2.

Pi

Pj

ei1 ei2

ej1 ej2

t

t

(76)

Horloge virtuelle

principe : l’émetteur d’un message précise la date virtuelle à laquelle celui-ci doit arriver (m,t).

Le récepteur connaît la date virtuelle à laquelle est arrivé le message.

Problème à résoudre :

Gestion de l’évolution de l’horloge virtuelle La cohérence temporelle (sûreté)

• Tous les processus ont la même perception de l’horloge virtuelle

• Un message estampillé à la date z doit être consommé à la date z La vivacité

• Si du point de vu d’un processus, le temps virtuel peut progresser, il progressera.

(77)

Solution centralisée

Un processus maître gère l’horloge virtuel hv

Les autres processus des dates de réception des messages envoyés

beaucoup de messages, processus souvent en attente (diminution du parallélisme), faible répartition.

Processus maitre

hv = i

Processus n

Tampon d’attente (mi,h) (mj,k) hv

hv

hv Message emis devant

être recu a… Si hv=h, alors consommer mi

….

(78)

Solution décentralisée :

Chaque processus possède une image de l’horloge virtuelle

Quand un message est consommé, le processus récepteur met son horloge à jour.

Problème d’interblocage :

Le processus j doit-il consommer le message (m,k+d), ou existe-t-il un message arrivant de z à une date inférieure. J est bloqué et se met en attente.

z, peut être dans le même cas, à cause d’autres processus : interblocage.

Pi

hvi = k

Pj

hvj = … (m,k+d)

Pz

(79)

Méthode pessimiste de Chandy et Misra

Quand un processus n envoi un message (m,y) à un processus p, il envoi également un message (null,y) aux autres processus.

Lorsqu’un processus j reçoit (null,y) d’un processus z, il sait que ce dernier ne lui enverra pas de message avant y.

Chaque processus connaît donc la date minimum à partir de laquelle chacun des processus entrant peut lui transmettre un message. Il est donc capable de décider du prochain message à accepter et de la valeur de son hv.

Ici : Si Pj ne possède que deux liaisons entrantes (en provenance de Pi et de Pz), il peut consommer (m,6) et positionner hvj à 6.

Pi

hvi = 5

Pj

hvj = 4Æ6 i :6

z :7 (m,6)

Pz

hvz = 6 (m,7) (null,7)

(80)

Interblocage et méthode pessimiste :

Pk peut recevoir des messages de Pj qui peut en recevoir de Pk

1) k envoi (m1,5) à z, (null,5) à j.

2) j reçoit (m2,10), il consomme (null,5) et met hvj = 5.

3) j met (m2,10) en attente car il attend le prochain message de k (pour faire un choix).

4) k attend un message de j (qui est en attente de k), conditionnant le prochain message qu’il enverra Æ Interblocage.

Pi Pj

i : 2 j : 5

Pk Pz

(m2,10) (m1,5)

(null,5)

(81)

Méthode pessimiste et anticipation.

A la réception de (null,y), un processus sachant (par anticipation) qu’il n’enverra rien avant y+δ, envoi sur toute ses liaisons (null, y+δ)

1) k envoi (m1,5) à l et (null,5) à j.

2) j sait que k ne lui enverra pas de message avant 5 (hvj = 5).

3) j recoit (m2,10).

4) j sait qu’il n’enverra rien avant δ.

5) j envoi (null,5+δ) à k

6) k sait qu’il n’enverra rien avant 5+δ’

7) k envoi (null,5+δ’) à j

8) 5+δ’’…>10Æ j accepte (m2,10) Æ Plus d’interblocage i

j

k

l

(m2,10)

(null, 5+δ) (null, 5), (null, 5+δ’) (null, 5+δ’) (m1, 5)

(82)

Méthode optimiste de Jefferson

Principe :

ƒ Elaboration d’une sauvegarde des états locaux des processus : ensemble des valeurs des variables du processus à un instant donné.

ƒ Une sauvegarde des messages émis et reçus.

ƒ Une prise en compte immédiate d’un message (m,hv) dès qu’il arrive.

ƒ Si un message (m’,hv’) arrive avec hv’<hv : Exécution d’un retour arrière de l’évolution du processus :

ƒ Recalage de l’état du processus sur l’état sauvegardé précédent ou égal à hv’

ƒ Annulation des messages émis depuis hv’, par l’envoi d’un anti message.

ƒ La réception de l’anti-message d’un message déjà consommé provoque un retour arrière du récepteur à la date du message.

(83)

Exemple :

Pi

Sauvegarde i10

hvi

10 12 14 15

Pj hvj

9 10

Sauvegarde j9

13 (m,13)

(m’,14)

Sauvegarde j13 (m’’,12)

Retour arrière Vers j9

Pi hvi

15

Pj hvj

9

anti(m’,14)

Retour arrière Vers i10

anti(m,13)

10 ƒ Compromis # sauvegarde ↔ précision

des décalage (temps)

ƒ Quelles sauvegardes peuvent être effacées ?

(84)

Temps Virtuel Global (GVT)

ƒ Le GVT est la borne inférieure sur les dates de retour arrière possibles.

GVT = min({hvi : 1≤i≤n}∪{t : un message (m,t) est en transit}

ƒ Le GVT est calculé à l’aide d’un algorithme réparti d’observation (chapitre suivant)

(85)

4. Observation et état global

(86)

Détection répartie de la terminaison

Objectif :

Savoir si une application répartie est terminée, sans faire aucune hypothèse sur la structure ou l’organisation de celle-ci (surveillance d’un calcul)

Sûreté :

Si l’observation indique que le calcul est terminé, alors le calcul est effectivement terminé

Vivacité :

Si le calcul se termine, alors l’algorithme de détection annoncera sa terminaison au bout d’un temps fini.

(87)

Principe :

Un processus doit être « actif » pour envoyer des messages

Un processus dans l’état actif peut passer dans l’état passif (fin d’un sous-calcul)

Lorsqu’un processus dans l’état passif reçoit un message, il repasse dans l’état actif.

Le calcul global est terminé si tous les processus sont inactifs et qu’il n’y a aucun message en circulation

(88)

L’algorithme de quatre compteurs

Hypothèse d’un modèle atomique :

• les temps de calcul sont infiniment courts

• Seules les communications prennent du temps

Æ Un calcul est terminé si ∑messages émis = ∑messages reçus

2 Compteurs associés à chaque processus i :

ei : nombre de messages émis par i ri : nombre de messages reçus par i

Un processus particulier demande la valeur des compteurs aux autres processus.

(89)

Pourquoi 2 compteurs ne suffisent pas :

ei(tj) = valeur de e renvoyépar i au temps t

1 2

3

temps-réel

Vague de consultation

t3 t2 t1

= =

⎭ =

⎬⎫

=

=

=

=

=

=

i

i i i

i

i t R r t

e

E ( ) ( )

0 ) (t r 0, )

(t r 1, ) (t r

0 ) (t e 1, ) e2(t 0,

) (t e

3 3 2

2 1

1

3 3 2

1 1

(90)

Solution : 2 Vagues de consultation (E1,R1) et (E2, R2)

R1 = E2 terminaison

preuve :

définitions : di et fi début (fin de la vague i)

R(t), E(t) Nombre de messages reçus (émis) au temps t.

Faits :

1 : d1<f1<d2<f2

2 : ei(t) ei(t’) et ri(t) ri(t’) t t’

2 : E(t) E(t’) et R(t) R(t’) t t’

3 : R(t) E(t) t 4 : R1 R(f1)

5 : E(d2) E2

Démonstration : Si R1=E2

Alors E2 R(f1) (4)

Donc E(d2) R(f1) (4+5) Si E(d2) R(f1)

Alors E(f1) R(f1) (car E(f1)E(d2)) (1+2) Or E(f1) R(f1)

Donc E(f1) = R(f1)

Il n’y avait plus de messages en court à la fin de la 1er vague

(91)

Algorithme général :

Plus d’hypothèses sur le temps de calcul des processus, ni sur les caractéristiques des liaisons.

Structure de la solution :

Prédicats :

vide(i,j) ≡ la liaison entre i et j est vide passi = (étati = passif) et (

voi de i

j sin

vide(i,j))

≡ i est passif et tous les messages qu’il a envoyé ont été reçus.

term =

i

passi ≡ le calcul est terminé

(92)

Détection répartie de l’interblocage

Objectif :

Savoir si plusieurs processus « s’inter-bloquent » lors d’un calcul plutôt que d’éviter l’interblocage (les méthodes pessimistes sont souvent trop restrictives)

Sûreté :

Si l’algorithme de contrôle annonce qu’il y a interblocage, celui-ci est effectif.

Vivacité :

Si un interblocage existe, il doit être détecté en un temps fini

Difficulté particulière :

Seul un sous groupe des processus gérant un calcul peuvent être concernés par un interblocage

Il est souhaitable qu’un seul processus détecte l’interblocage

(93)

Interblocage sur allocation de ressource

p1 attend une ressource de p2 qui attend p3 qui attend p1

Graphe des processus en attente

Détecter un interblocage revient à détecter une boucle dans le graphe des processus en attente.

1

2 3

(94)

Interblocage sur communications

p1 attend un message de p2 ou de p3 ou de p4 ….

p2 attend un message de p4 ou de p3

détecter un interblocage revient à détecter :

1) que le graphe des attente est une composante fortement connexe 2) qu’il n’y a aucun message en transit entre les processus du graphe

1

2 3

4

plus d’interblocage

(95)

Algorithme de Mitchell et Merrit

Interblocage par allocation

Principe :

Au moment d’un blocage, une valeur unique est calculée par le processus bloqué

Cette valeur se propage par consultation/mise à jour des processus bloqués

Si un processus bloqué constate que le processus bloquant possède la valeur qu’il a lui même calculé, c’est qu’il y a interblocage

(96)

Mise en œuvre

Chaque processus i possède : une étiquette privi, une étiquette pubi

L’opérateur sup(pubi, pubj) renvoi une valeur supérieure à pubi et pubj R1 : règle de blocage

Lorsque le processus i se bloque en attente d’une ressource possédée par le site j, il redéfinit ses étiquettes : pubi = privi = sup(pubi, pubj)

R2 : Règle de propagation

Lorsque i est bloqué par j, il consulte régulièrement la valeur de pubj et effectue : si pubi<pubj alors pubi = pubj fsi

R3 : Règle d’activation

Lorsque j libère une ressource demandée par i,k,… celle-ci est allouée à l’un d’entre eux.

Les autres processus sont désormais bloqués par celui qui a été choisi et appliquent la règle R1 avec lui.

R4 : Règle de détection

Si suite à la règle R2, un site i bloqué par j constate pubi = privi = pubj ⇒ il est sur un circuit et il est le seul à le savoir.

(97)

Algorithme de Chandy, Missa et Haas

Interblocage par communication : détection d’une composante fortement connexe.

Diffusion d’un message « question(i,j) »

Un processus recevant 2 fois « question() » fait parti d’une boucle

Si tous les processus « fils » d’un processus donné font parti d’une boucle, il existe une composante fortement connexe.

1

2

3 4

question(0,1)

0 question(1,4)

question(1,3) Graphe des

processus en attente

Références

Documents relatifs

En d´efinitive, le model checking probabiliste et la v´erification de propri´et´es de terminaison de programmes `a base de r`egles probabilistes sont compl´ementaires dans le sens o`

Nous proposons un modèle simple pour l'analyse de la performance de ces algorithmes et, basée sur ce modèle, une Condition de Garantie de la Synchronisation,

Ainsi, dans [AAAC07] et [ACM10], des conditions assurant la stabilité et la stabilisation en temps ni des systèmes linéaires invariants sont basées sur des fonctions de

peut prétendre encore réaliser des prothèses ou des obturations de qualité sans une bonne compréhension des matériaux et de leurs particularités physiques!. Hélas, certains

Par décision du 30 octobre 2008, la Cour constitutionnelle a considéré que cette différence de traitement violait les articles 10 et 11 de la Constitution et qu’il convenait de lire

Sur le plan de la r´esolution exacte dans le cas g´en´eral, nous avons d’abord approch´e le probl`eme de mani`ere combinatoire, c’est-`a-dire en exploitant direc- tement sa

Au niveau de la mise en œuvre de cet algorithme simple, on peut ajouter à la lecture des variables A et B un test pour garantir, avant d’entrer dans la boucle principale, que les

[r]