Ordonnancement des évènements
Ordonnancement par séquenceurLe séquenceur évite les trous dans la numérotation. Un séquenceur S délivre une valeur entière > 0. Fonction ticket(S). Deux propriétés : P1 : si a et b deux opérations ticket(S) alors a > b ou b > a. P2 : si a est une exécution de t = ticket(S) alors t est le nombre d'opérations ticket(S) qui ont précédé a. P1 est l'EM sur ticket(S) et P2 est l'absence de trous. Le privilègeMise en oeuvre générale d'un séquenceur = faire circuler un privilège entre les sites. Privilège = valeur courante du séquenceur. Quand site i possède le privilège, il peut faire ticket(S). shadow_right.gif" Séquenceur circulant. shadow_right.gif" Séquenceur sur une voie à diffusion. Séquenceur circulant - Anneau virtuelDéfinir un itinéraire pour le parcours du privilège. Méthode simple = chaque site communique avec 2 sites voisins. Un numéro unique est attribué à chaque site. Chaque site i a un voisin successeur suiv(i) et un prédécesseur pred(i). shadow_right.gif" anneau virtuel.
Le privilège tourne toujours dans le même sens. En cas de panne d'un site shadow_right.gif" reconstruction de l'anneau shadow_right.gif" reconfiguration (mise à jour des variables suiv et pred). Site défaillant remis en route shadow_right.gif" réinsertion. Séquenceur circulant - Variables d'état1- Fonctionnement sans pannes. Soit K (K > 1). Sur chaque site i, P_i assure la circulation du privilège. Chaque P_i a une variable S[i] (0 S[i] peut être modifiée par P_i et lue par P_suiv(i). P_i possède le privilège quand :
Lorsque P_i possède le privilège il doit l'abandonner au bout d'un temps fini :
Équité = chaque processus reçoit le privilège à tour de rôle. Exemple avec N=3, K=2 et S=000. Évolution du système = 000 - 1 00 - 11 0 - 111 - 0 11 - 00 1 Séquenceur circulant - Panne d'un processus Processus 1- aucun nouveau front est créé. 2- disparition d'un front shadow_right.gif" regénération par P_0. Processus P_0. shadow_right.gif" impossible de regénérer le front. Le processus qui joue le rôle de P_0 est le seul tel que pred[i] > i. Chaque processus est programmé pour jouer le rôle de P_0.
Séquenceur circulant - Réinsertion d'un processus1- Reconfigurer l'anneau virtuel. 2- réinitialiser S[i]. Il faut que j (j = suiv(i)) n'autorise pas la lecture de S[j] pendant la SC.
Séquenceur circulant - Le jetonVariable d'état = théorie. Le privilège = 1 jeton qui circule sur l'anneau. Le jeton porte la valeur v. Avant la transmission du jeton :
À chaque passage du jeton sur j, une horloge de garde est armée. Si l'horloge se déclenche, j consulte S[i] (i = pred(j)).
j le régénère avec S[i] et réarme son horloge. Séquenceur sur une voie à diffusion1 site accède au médium grâce à un communicateur. 1 message envoyé par i est diffusé à tous les sites (y compris i). Tous les communicateurs classent les messages dans le même ordre. shadow_right.gif" ordonnancement global. Chaque site i a un compteur local cpt_i.
En cas de panne du site iLes autres sites continuent à fonctionner. Pour se réinsérer, i envoie une requête de réinsertion à j. j renvoie un message de synchronisation. Quand le message apparaît dans la file de sortie :
|
|||||||||
Envoyez un courrier électronique à Philippe Bancquart pour toute question ou remarque concernant ce site Web. |