Détection de la terminaison distribuée



Documents pareils
Introduction aux algorithmes répartis

Conception des systèmes répartis

L exclusion mutuelle distribuée

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Recherche dans un tableau

Les structures de données. Rajae El Ouazzani

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Algorithmique répartie

Définitions. Numéro à préciser. (Durée : )

Algorithmique et structures de données I

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Intégration et probabilités TD1 Espaces mesurés

Cours de Systèmes d Exploitation

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Pourquoi l apprentissage?

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

COMMANDER A DISTANCE LE ROBOT-PONG ETUDE DE LA TELECOMMANDE (2 nde PARTIE)

Algorithmique des Systèmes Répartis Protocoles de Communications

MIS 102 Initiation à l Informatique

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Arbres binaires de recherche

Feuille TD n 1 Exercices d algorithmique éléments de correction

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

1 Mesure de la performance d un système temps réel : la gigue

Programmation linéaire

CAC: Un algorithme d arc-consistance. configurable, générique et adaptatif.

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

1 Recherche en table par balayage

Licence Sciences et Technologies Examen janvier 2010

Resolution limit in community detection

Ebauche Rapport finale

Année Universitaire ère année de Master Droit Mention Droit Privé 1 er semestre. 1 er SEMESTRE 8 matières CM TD COEFF ECTS.

Transmission d informations sur le réseau électrique

OCL - Object Constraint Language

Quelques Algorithmes simples

Utilisation des tableaux sémantiques dans les logiques de description

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Organigramme / Algorigramme Dossier élève 1 SI

Cours de Programmation en Langage Synchrone SIGNAL. Bernard HOUSSAIS IRISA. Équipe ESPRESSO

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Chp. 4. Minimisation d une fonction d une variable

Surveillance et maintenance prédictive : évaluation de la latence de fautes. Zineb SIMEU-ABAZI Univ. Joseph Fourier, LAG)

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Vérification formelle de la plate-forme Java Card

Intégration et probabilités TD1 Espaces mesurés Corrigé

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Initiation à la Programmation en Logique avec SISCtus Prolog

Les arbres binaires de recherche

2. Comprendre les définitions de classes

Cryptographie. Cours 3/8 - Chiffrement asymétrique

.NET - Classe de Log

Problèmes liés à la concurrence

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Application 1- VBA : Test de comportements d'investissements

Programmation parallèle et distribuée

Programmation C++ (débutant)/instructions for, while et do...while

TP1 Méthodes de Monte Carlo et techniques de réduction de variance, application au pricing d options

Introduction à la Programmation Parallèle: MPI

Initiation à l algorithmique

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

TD n o 8 - Domain Name System (DNS)

Backtracking asynchrone agile pour les problèmes de satisfaction de contraintes distribués

TP3 : Manipulation et implantation de systèmes de fichiers 1

L apprentissage automatique

TP : Gestion d une image au format PGM

Genie Logiciel Avancé Projet :Gestion d une chaîne hotelier low cost

Algorithmes récursifs

TD3: tableaux avancées, première classe et chaînes

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Tp 1 correction. Structures de données (IF2)

Introduction à la programmation concurrente

Cours de Master Recherche

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

Résolution de systèmes linéaires par des méthodes directes

C f tracée ci- contre est la représentation graphique d une

Chapitre 4 : Exclusion mutuelle

III- Raisonnement par récurrence

VIII- Circuits séquentiels. Mémoires

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

Algorithmique & programmation

Probabilités conditionnelles Loi binomiale

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

1 Modélisation d être mauvais payeur

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Consolidation de stockage

Cours de Génie Logiciel

Transcription:

Cours Algorithmique répartie Master 2 Université Paris-Diderot Devoir 1 (à rendre avant le 22 février 2010) Détection de la terminaison distribuée Généralités Π = {p 0,..., p n 1 } est l ensemble des processus. Les processus communiquent par envoi-réception de messages. Un message de p à q transite par le canal de p à q. On suppose que les processus exécutent un algorithme tel que chaque processus a une variable locale T er p qui indique s il a localement terminé, et tel que pour cet algorithme chaque processus p peut: S il est dans l état T er p envoyer un message à un autre processus S il est dans l état T er p finir son travail local et passer dans l état T er p = T rue S il est dans l état T er p et qu il reçoit un message passer dans l état T er p = F alse. On ne connaît pas l algorithme exécuté (qu on appellera l algorithme sous-jacent) on sait seulement qu il vérifie les règles précédentes. Soit P RED un prédicat (par exemple un prédicat correspondant à la terminaison distribuée). Étant donné une exécution de l algorithme sous-jacent, on note P RED t la valeur de ce prédicat au temps t dans cette exécution. On dit qu un prédicat P RED est stable si et seulement si t(p RED t = t > t : P RED t ) 1. On suppose pour cette question que la communication est instantanée: il n y a jamais de messages en transit dans les canaux de communication. Soit T ER = ( p Π : T er p = T rue) montrer que T ER est stable. 2. On suppose maintenant que la communication n est plus instantanée et que des messages peuvent être en transit dans les canaux. (a) T ER est-il stable? (Prouvez-le ou donnez un contre-exemple) (b) Soit CALV IDE = ( pq Π Π : le canal de p à q est vide). CALV IDE est-il stable? (Prouvezle ou donnez un contre-exemple) Soit T ERG = T ER CALV IDE. T ERG est-il stable? (Prouvez le ou donnez un contre-exemple) Un algorithme de détection d un prédicat P RED doit détecter si le prédicat P RED est vrai; plus précisément, il s agit d un algorithme distribué (son code s exécute sur chaque processus) et on dira qu il détecte P RED si au cours de l exécution au moins un des processus exécute l action DET ECT E. Cet algorithme doit vérifier: Non-interférence. L algorithme de détection ne doit pas perturber l algorithme que les processus exécutent. 1

Sûreté. Si l algorithme de détection détecte P RED alors P RED est vraie. Vivacité. Si dans l algorithme sous-jacent P RED est vrai alors il existe un instant pour lequel l algorithme de détection détecte P RED. Un algorithme avec communication instantanée Dans toute cette section, on suppose que la communication est instantanée: les canaux de communications sont toujours vides. On va construire un algorithme de détection de la terminaison: c est-à-dire un algorithme qui détecte le prédicat T ER précédent. Dans cet algorithme, p 0 est l initiateur de l algorithme: initialement, uniquement T er p0 est false. Le principe de cet algorithme est de maintenir un arbre de calcul de racine p 0 qui essentiellement contient les processus actifs (un processus p est actif si T er p = T rue) Plus précisément, cet arbre T =< S T, A T > a comme racine p 0 et vérifie: T est un arbre de racine p 0 (ou T est vide) A chaque instant S T contient exactement tous les processus actifs Pour assurer ces propriétés, quand p envoie un message m à q, si q n était pas actif auparavant, p devient le père de q. Quand maintenant, q devient inactif et qu il n a pas de descendant dans l arbre, q est supprimé de l arbre. Si T a bien les propriétés précédentes, il est clair que si p 0 est le seul élément de l arbre et si T er p0 est vrai, alors T ER est vrai et on a bien détecté la terminaison. Plus précisément l arbre T est réparti et le processus p correspond au sommet p de T. Chaque processus q maintient une variable pere q qui indique le processus père de q pour T (nil s il n a pas de père), chaque processus maintient aussi une variable Nfils qui compte le nombre de fils qu il a dans T. L algorithme est décrit Figure 1. Soit T =< S T, A T > l arbre défini par: S T = {p pere p nil} et A T = {(p, pere p ) pere p nil} Soient: P 1 T er p = p S T P 2 NF ils p = {q (q, p) A T } P 3 T est un arbre de racine p 0 P 4 (T er p Nfils p = 0) = p / S T Soit P = P 1 P 2 P 3 P 4. 1. Montrer qu initialement, P est vraie, et que si P est vraie alors si un processus exécute Envoi, Reception, Inactif et Fini (et possiblement un autre processus exécute les actions qui permettent l une de ces actions) alors P reste vrai. En déduire que pour toutes les exécutions P est toujours vrai. 2. Montrer que l algorithme vérifie bien la propriété de sûreté pour la détection de T ER 3. Montrer que l algorithme vérifie bien la propriété de vivacité pour la détection de T ER 4. Est-ce que si initialement pour d autres processus p que p 0, T er p est faux, l algorithme est encore correct? Si non proposez succinctement des idées pour une solution. Un algorithme avec communication asynchrone Dans cette partie on suppose que la communication est asynchrone: des messages peuvent être en transit dans les canaux de communication. On cherche donc à détecter le prédicat T ERG. 2

Initialisations: 1 Nfils p := 0; 2 if p = p 0 then pere p0 = p 0 else pere p = nil 3 if p = p 0 then T er p = F alse else T er p = T rue Envoi: 4 { T er p } 5 send< m, p > to q 6 recevoir< P ERE, b > 7 if b then Nfils := Nfils + 1 Reception: 8 {message < m, q > présent } 9 recevoir< m, q >; T er p := F alse 10 if pere p == nil then 11 pere p = q; send < P ERE, true > to q 12 else send< P ERE, false > to q Inactif: 13 { T er p } 14 T er p := T rue 15 if Nfils p = 0 then 16 if p = p 0 then DET ECT E 17 else send< F INI > to pere p 18 pere p = nil Fini: 19 {message < F INI > présent } 20 recevoir < F INI >; Nfils p := Nfils p 1 21 if Nfils p = 0 T er p then 22 if p = p 0 then DET ECT E 23 else send< F INI > to pere p 24 pere p = nil Figure 1: Algorithme de détection synchrone. 3

L arbre T maintenant contient aussi les messages en transit: quand un processus p envoie un message m à q, le message est ajouté à l arbre T (comme fils de p). Aussi, quand q reçoit m, le message m doit être retiré de T. Et quand un processus p devient inactif et (1) que tous les messages qu il a émis ont été reçus et (2) qu il n est le père d aucun processus (ce qui signifie que dans T, p est une feuille), il est aussi retiré de T. L arbre sera donc représenté par la variable pere p du processus p qui indique le processus père de p dans T et un compteur c p qui compte le nombre de fils de p. Pour résumé: Quand un processus p reçoit un message de q, s il n a pas encore de père, q devient son père. Sinon il envoie un message SIG à q (pour l informer que le message reçu n est plus en transit). Quand un processus p envoie un message à q, il incrémente c p Quand p reçoit un SIG il décrémente c p Quand p devient inactif et c p = 0 il envoie SIG à son père et se retire de T. L algorithme se trouve Figure 2. Pour prouver l algorithme on va montrer que l arbre construit par l algorithme correspond bien à ce que l on suppose. Soit une configuration au cours d une exécution de l algorithme et T < S T, A T > le graphe défini par: S T = {p pere p nil} {< m, p > est en transit } {< SIG, p > est en transit } A T = {(p, pere p ) pere p nil} {(< m, p >, p) < m, p > est en transit} {(< SIG, p >, p) < SIG, p > est en transit} Soient: Soit Q = Q 1 Q 2 Q 3 Q 4 Q 5. Q 1 T er p = p S T Q 2 c p = {q (q, p) A T } Q 3 T est un arbre de racine p 0 Q 4 (T er p c p = 0) = p / S T Q 5 (u, v) A T = u S t v Π 1. Prouver que Q est un invariant du programme (Q est vrai initialement et si Q est vrai et un processus exécute une des actions Envoi, Reception, Inactif ou SIG alors Q reste vrai. 2. En déduire que cet algorithme vérifie la propriété de sûreté pour la détection de T ERG. 3. Montrer que cet algorithme vérifie la propriété de vivacité pour la détection de T ERG. 4

Initialisations: 1 c p := 0; 2 if p = p 0 then pere p0 = p 0 else pere p = nil 3 if p = p 0 then T er p = F alse else T er p = T rue Envoi: 4 { T er p } 5 send< m, p > to q 6 c p := c p + 1 Reception: 7 {message < m, q > disponible} 8 recevoir< m, q >; T er p := F alse 9 if pere p == nil then pere p = q 10 else send< SIG, p > to q Inactif: 11 { T er p } 12 T er p := T rue 13 if c p = 0 then 14 if p = p 0 then DET ECT E 15 else send< SIG, pere p > to pere p 16 pere p = nil SIG: 17 {message < SIG, q > disponible} 18 recevoir < SIG, q >; c p := c p 1 19 if c p = 0 then 20 if p = p 0 then DET ECT E 21 else send< SIG, pere p > to pere p 22 pere p = nil Figure 2: Algorithm de détection. 5