Algorithmique distribuée. Exclusion mutuelle



Documents pareils
L exclusion mutuelle distribuée

Systèmes Répartis. Mr. Mehrez Boulares, Mr. Nour Ben Yahia

Introduction aux algorithmes répartis

Chapitre 4 : Exclusion mutuelle

Algorithmes d exclusion mutuelle : tolérance aux fautes et adaptation aux grilles

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Cours de Systèmes d Exploitation

Ebauche Rapport finale

Installation d un serveur DHCP sous Gnu/Linux

Pourquoi l apprentissage?

Guide d'utilisation du Serveur USB

Exclusion mutuelle de groupes dans les systèmes distribués

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

Cryptographie. Master de cryptographie Architectures PKI. 23 mars Université Rennes 1

Le module Supply Chain pour un fonctionnement en réseau

Systemes d'exploitation des ordinateurs

Jean-Louis Cech descente des Princes des Baux Orange Orange : 20 juin 2014.

1. Utilisation du logiciel Keepass

Conception des systèmes répartis

TRANSMETTEUR TELEPHONIQUE TTX = SINTEL X

Principes de DHCP. Le mécanisme de délivrance d'une adresse IP à un client DHCP s'effectue en 4 étapes : COMMUTATEUR 1. DHCP DISCOVER 2.

Cours A7 : Temps Réel

LE PROBLEME DU PLUS COURT CHEMIN

MANUEL PROGRAMME DE GESTION DU CPL WI-FI

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

Manuel d'utilisation du client VPN Édition 1

Partie 7 : Gestion de la mémoire

Gestion des documents associés

Windows Internet Name Service (WINS)

Algorithmique répartie

Guide de fonctions du téléphone du système SCI Norstar

OASIS Date de publication

STATUTS VERSION Elle est constituée en date du 29 septembre La liste des membres fondateurs est annexée aux présents statuts.

Gestion des processus

Service client LSC 1

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Chapitre 1 : Introduction aux bases de données

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Ordonnancement temps réel

Installation d'un serveur DHCP sous Windows 2000 Serveur

1. Introduction Création d'une requête...2

Algorithmes de recherche

portnox pour un contrôle amélioré des accès réseau Copyright 2008 Access Layers. Tous droits réservés.

TD 2 Chapitre 4 : Support des Services et Serveurs. Objectifs : Maîtriser l'exploitation des tables de routage dynamique.

WEBMESTRE : CONCEPTION DE SITES ET ADMINISTRATION DE SERVEURS WEB

Manuel d'utilisation d'apimail V3

Guide de démarrage rapide Centre de copies et d'impression Bureau en Gros en ligne

Logiciel de gestion de données

CONNECTEUR PRESTASHOP VTIGER CRM

CARPE. Documentation Informatique S E T R A. Version Août CARPE (Documentation Informatique) 1

mai-2008 Infogérance des serveurs conçus par SIS alp 1

Alcatel-Lucent 500 DECT Handset. Localisation and notification management Guide de Configuration

Network musical jammin

GESTION DES BONS DE COMMANDE

V 8.2. Vous allez utiliser les services en ligne de la plate forme de dématérialisation de la Salle des Marchés achatpublic.com.

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

Programmation Objet - Cours II

CEG4566/CSI4541 Conception de systèmes temps réel

MANUEL D UTILISATION DE LA SALLE DES MARCHES APPEL D OFFRES OUVERT ACCES ENTREPRISES. Version 8.2

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

TD n o 8 - Domain Name System (DNS)

Systèmes et algorithmes répartis

Maintenir Debian GNU/Linux à jour

Webinaire de «formation de trésorier de Club» Questions et réponses

Installation du point d'accès Wi-Fi au réseau

GUIDE DE L UTILISATEUR

ORTIZ Franck Groupe 4. Terminal serveur pour administrer un serveur Windows à distance, client rdp linux.

Les messages d erreur d'applidis Client

INDEX Fonctionnement Schéma de câblage... 24

"Questions & Answers" pour les actionnaires en Belgique. Formalités à remplir pour participer personnellement à l'assemblée Générale

Gestion répartie de données - 1 Duplication et cohérence

ÉLECTRONIQUE DE LA PORTE

Initiation au cryptage et à la signature électronique

Directives du programme Ontario au travail

PC Check & Tuning 2010 Optimisez et accélérez rapidement et simplement les performances de votre PC!

Les réseaux cellulaires

Microsoft Application Center Test

KeePass - Mise en œuvre et utilisation

Petit guide d'installation de l'option de connexion réseau

GdsCompta. Logiciel de comptabilité générale

Chapitre 5 : Flot maximal dans un graphe

Dynamic Host Configuration Protocol

3. Quels sont les avantages d'enregistrer un compte de compagnie/d'administrateur?

Sauvegarde des données du scribe sur disque USB

Fiche FOCUS. Les téléprocédures. Gérer vos comptes bancaires

Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS

Données Réparties. Thibault BERNARD.

SQL Server Administration d'une base de données transactionnelle avec SQL Server Management Studio (édition enrichie de vidéos)

1. Personnalisation de la page d'accueil

Administration Réseau sous Ubuntu SERVER Serveur DHCP

Alcatel OmniPCX Office

Le serveur de communication IceWarp. Guide SyncML. Version 10. Juillet IceWarp France / DARNIS Informatique

Votre appareil est configuré en usine pour permettre d'envoyer immédiatement des SMS.

1. Création d'un état Création d'un état Instantané Colonnes Création d'un état Instantané Tableau... 4

STI 2 Édition 5 / Mars 2004

Support Agile avec Kanban quelques trucs et astuces par Tomas Björkholm

GOL-502 Industrie de services. Travaux Pratique / Devoir #7

Transcription:

Algorithmique distribuée Exclusion mutuelle Eric Cariou Master Technologies de l'internet 1 ère année Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1

Exclusion mutuelle distribuée Exclusion mutuelle Contexte de plusieurs processus s'exécutant en parallèle Accès à une ressource partagée par un seul processus à la fois Exclusion mutuelle en distribué Accès à une ressource partagée distante par un seul processus à la fois Processus distribués Requêtes et gestion d'accès via des messages échangés entre les processus Nécessité de mettre en oeuvre des algorithmes gérant ces échanges de messages pour assurer l'exclusion mutuelle Algorithmes d'exclusion mutuelle décrits dans ce cours : plus de détails dans «Synchronisation et état global dans les systèmes répartis», Michel Raynal, Eyrolles, 1992 2

Rappel exclusion mutuelle Exclusion mutuelle Une ressource partagée ou une section critique n'est accédée que par un processus à la fois Un processus est dans 3 états possibles, par rapport à l'accès à la ressource Demandeur : demande à utiliser la ressource, à entrer dans la section Dedans : dans la section critique, utilise la ressource partagée Dehors : en dehors de la section et non demandeur d'y entrer Changement d'état par un processus De dehors à demandeur pour demander à accéder à la ressource De dedans à dehors pour préciser qu'il libère la ressource Le passage de l'état demandeur à l'état dedans est géré par le système et/ou l'algorithme de gestion d'accès à la ressource 3

Rappel exclusion mutuelle Diagramme d'états de l'accès en exclusion mutuelle Dehors acquérir Demandeur libérer < géré par le système > Dedans L'accès en exclusion mutuelle doit respecter deux propriétés Sûreté (safety) : au plus un processus est à la fois dans la section critique (dans l'état dedans) Vivacité (liveness) : tout processus demandant à entrer dans la section critique (à passer dans l'état dedans) y entre en un temps fini 4

Exclusion mutuelle distribuée Plusieurs grandes familles de méthodes Contrôle par un serveur qui centralise les demandes d'accès à la ressource partagée Contrôle par jeton Un jeton circule entre les processus et donne l'accès à la ressource La gestion et l'affectation du jeton et donc l'accès à la ressource est faite par les processus entre eux Deux approches : jeton circulant en permanence ou affecté à la demande des processus Contrôle par permission Les processus s'autorisent mutuellement à accéder à la ressource 5

Principe général Contrôle par serveur Un serveur centralise et gère l'accès à la ressource Algorithme Un processus voulant accéder à la ressource (quand il passe dans l'état demandeur) envoie une requête au serveur Quand le serveur lui envoie l'autorisation, il accède à la ressource (passe dans l'état dedans) Il informe le serveur quand il relâche la ressource (passe dans l'état dehors) Le serveur reçoit les demandes d'accès et envoie les autorisations d'accès aux processus demandeurs Avec par exemple une gestion FIFO : premier processus demandeur, premier autorisé à accéder à la ressource 6

Contrôle par serveur Méthode par serveur centralisateur, critiques Avantages Très simple à mettre en oeuvre Simple pour gérer la concurrence d'accès à la ressource Inconvénients Nécessite un élément particulier pour gérer l'accès Potentiel point faible, goulot d'étranglement Suppression du serveur centralisateur Via par exemple une méthode à jeton : le processus qui a le jeton peut accéder à la ressource La gestion et l'affectation du jeton est faite par les processus entre eux Pas de besoin de serveur centralisateur 7

Principe général Méthode par jeton Un jeton unique circule entre tous les processus Le processus qui a le jeton est le seul qui peut accéder à la section critique Respect des propriétés Sûreté : grâce au jeton unique Vivacité : l'algorithme doit assurer que le jeton circule bien entre tous les processus voulant accéder à la ressource Plusieurs versions Anneau sur lequel circule le jeton en permanence Jeton affecté à la demande des processus 8

Méthode par jeton Algorithme de [Le Lann, 77] Un jeton unique circule en permanence entre les processus via une topologie en anneau Quand un processus reçoit le jeton S'il est dans l'état demandeur : il passe dans l'état dedans et accède à la ressource S'il est dans l'état dehors, il passe le jeton à son voisin Quand le processus quitte l'état dedans, il passe le jeton à son voisin Respect des propriétés Sûreté : via le jeton unique qui autorise l'accès à la ressource Vivacité : si un processus lâche le jeton (la ressource) en un temps fini et que tous les processus appartiennent à l'anneau 9

Méthode par jeton Algorithme de [Le Lann, 77], critiques Inconvénients Nécessite des échanges de messages (pour faire circuler le jeton) même si aucun site ne veut accéder à la ressource Temps d'accès à la ressource peut être potentiellement relativement long Si le processus i+1 a le jeton et que le processus i veut accéder à la ressource et est le seul à vouloir y accéder, il faut quand même attendre que le jeton fasse tout le tour de l'anneau Avantages Très simple à mettre en oeuvre Intéressant si nombreux processus demandeurs de la ressource Jeton arrivera rapidement à un processus demandeur Équitable en terme de nombre d'accès et de temps d'attente Aucun processus n'est privilégié 10

Méthode par jeton Variante de la méthode du jeton Au lieu d'attendre le jeton, un processus diffuse à tous le fait qu'il veut obtenir le jeton Le processus qui a le jeton sait alors à qui il peut l'envoyer Évite les attentes et les circulations inutiles du jeton Algorithme de [ Ricart & Agrawala, 83 ] Soit N processus avec un canal bi-directionnel entre chaque processus Canaux fiables mais pas forcément FIFO Localement, un processus Pi possède un tableau nbreq, de taille N Pour Pi, nbreq [ j ] est le nombre de requêtes d'accès que le processus Pj a fait et que Pi connaît (par principe il les connaît toutes) 11

Méthode par jeton Algorithme de [ Ricart & Agrawala, 83 ] (suite) Le jeton est un tableau de taille N jeton [ i ] est le nombre de fois où le processus Pi a accédé à la ressource La case i de jeton n'est modifiée que par Pi quand celui-ci accède à la ressource Initialisation Pour tous les sites Pi : j [ 1.. N ] : nbreq [ j ] = 0 Jeton : j [ 1.. N ] : jeton [ j ] = 0 Un site donné possède le jeton au départ Quand un site veut accéder à la ressource et n'a pas le jeton Envoie un message de requête à tous les processus 12

Méthode par jeton Algorithme de [ Ricart & Agrawala, 83 ] (suite) Quand processus Pj reçoit un message de requête venant de Pi Pj modifie son nbreq localement : nbreq [ i ] = nbreq [ i ] + 1 Pj mémorise que Pi a demandé à avoir la ressource Si Pj possède le jeton et est dans l'état dehors Pj envoie le jeton à Pi Quand processus récupère le jeton Il accède à la ressource (passe dans l'état dedans) Quand Pi libère la ressource (passe dans l'état dehors) Met à jour le jeton : jeton [ i ] = jeton [ i ] + 1 Parcourt nbreq pour trouver un j tel que : nbreq [ j ] > jeton [ j ] Une demande d'accès à la ressource de Pj n'a pas encore été satisfaite : Pi envoie le jeton à Pj Si aucun processus n'attend le jeton : Pi le garde 13

Méthode par jeton Algorithme de [ Ricart & Agrawala, 83 ], respect des propriétés Sûreté : seul le processus ayant le jeton accède à la ressource Vivacité : assurée si les processus distribuent équitablement le jeton aux autres processus Méthode de choix du processus qui va récupérer le jeton lorsque l'on sort de l'état dedans Pi parcourt nbreq à partir de l'indice i+1 jusqu'à N puis continue de 1 à i-1 Chaque processus teste les demandes d'accès des autres processus en commençant à un processus spécifique et différent de la liste Évite que par exemple tous les processus avec un petit identificateur soient servis systématiquement en premier 14

Méthodes par permission Méthodes par permission Un processus doit avoir l'autorisation des autres processus pour accéder à la ressource Principe général Un processus demande l'autorisation à un sous-ensemble donné de tous les processus Deux modes Permission individuelle : un processus peut donner sa permission à plusieurs autres à la fois Permission par arbitre : un processus ne donne sa permission qu'à un seul processus à la fois Les sous-ensembles sont conçus alors tel qu'au moins un processus soit commun à 2 sous-ensembles : il joue le rôle d'arbitre 15

Permission individuelle Algorithme de [Ricart & Agrawala, 81] Permission individuelle Chaque processus demande l'autorisation à tous les autres (sauf lui par principe) Liste des processus à interroger par le processus Pi pour accéder à la ressource : Ri = { 1,..., N } { i } Se base sur une horloge logique (Lamport) pour garantir le bon fonctionnement de l'algorithme Ordonnancement des demandes d'accès à la ressource Si un processus ayant fait une demande d'accès reçoit une demande d'un autre processus avec une date antérieure à la sienne, il donnera son autorisation à l'autre processus Et passera donc après lui puisque l'autre processus fera le contraire 16

Permission individuelle Algorithme de [Ricart & Agrawala, 81], fonctionnement Chaque processus gère les variables locales suivantes Une horloge Hi Une variable dernier qui contient la date de la dernière demande d'accès la ressource L'ensemble Ri Un ensemble d'identificateurs de processus dont on attend une réponse : attendu Un ensemble d'identificateurs de processus dont on diffère le renvoi de permission si on est plus prioritaire qu'eux : différé Initialisation Hi = dernier = 0 différé =, attendu = Ri 17

Permission individuelle Algorithme de [Ricart & Agrawala, 81], fonctionnement (suite) Si un processus veut accéder à la ressource, il exécute Hi = Hi + 1 dernier = Hi attendu = Ri Envoie une demande de permission à tous les processus de Ri avec estampille ( Hi, i ) Se met alors en attente de réception de permission de la part de tous les processus dont l'identificateur est contenu dans attendu Quand l'ensemble attendu est vide, le processus a reçu la permission de tous les autres processus Accède alors à la ressource partagée Quand accès terminé Envoie une permission à tous les processus dont l'id est dans différé différé est ensuite réinitialisé (différé = ) 18

Permission individuelle Algorithme de [Ricart & Agrawala, 81], fonctionnement (suite) Quand un processus Pi reçoit une demande de permission de la part du processus Pj contenant l'estampille (H, j) Met à jour Hi : Hi = max (Hi, H) Si Pi pas en attente d'accès à la ressource : envoie permission à Pj Sinon, si Pi est en attente d'accès à la ressource Si Pi est prioritaire : place j dans l'ensemble différé On lui enverra la permission quand on aura accédé à la ressource Si Pj est prioritaire : envoi permission à Pj Pj doit passer avant moi, je lui envoie ma permission La priorité est définie selon la datation des demandes d'accès à la ressource de chaque processus Le processus prioritaire est celui qui a fait sa demande en premier Ordre des dates : l'ordre << de l'horloge de Lamport : ( dernier, i ) << ( H, j ) si ( ( dernier < H ) ou ( dernier = H et i < j ) ) 19

Permission individuelle Algorithme de [Ricart & Agrawala, 81], fonctionnement (fin) Quand processus Pi reçoit une permission de la part du processus Pj Supprime l'identificateur de Pj de l'ensemble attendu : attendu = attendu { j } Respect des propriétés Sûreté : vérifiée (et prouvable...) Vivacité : assurée grâce aux datations et aux priorités associées Inconvénient principal de cet algorithme Nombre relativement important de messages échangés 20

Permission individuelle Permission individuelle, amélioration de l'algorithme de [Ricart & Agrawala, 81] [Carvalho & Roucairol, 83] Si Pi veut accéder plusieurs fois de rang à la ressource partagée et si Pj entre 2 accès (ou demandes d'accès) de Pi n'a pas demandé à accéder à la ressource Pas la peine de demander l'autorisation à Pj car on sait alors qu'il donnera par principe son autorisation à Pi Limite alors le nombre de messages échangés [Chandy & Misra, 84], améliorations tel que Les processus ne voulant pas accéder à la ressource et qui ont déjà donné leur permission ne reçoivent pas de demande de permission Horloges avec des datations bornées (modulo m) Pas d'identification des processus 21

Permission par arbitre Permission par arbitre Un processus ne donne qu'une permission à la fois Il redonnera sa permission à un autre processus quand le processus a qui il avait donné précédemment la permission lui a indiqué qu'il a fini d'accéder à la ressource La sûreté est assurée car Les sous-ensemble de processus à qui un processus demande la permission sont construits tel qu'ils y ait toujours au moins un processus commun à 2 sous-ensemble Un processus commun à 2 sous-ensembles est alors arbitre Comme il ne peut donner sa permission qu'à un seul processus, les processus de 2 sous-ensembles ne peuvent pas tous donner simultanément la permission à 2 processus différents C'est donc ce processus commun qui détermine à qui donner la ressource 22

Permission par arbitre Algorithme de [ Maekawa, 85 ] Chaque processus Pi possède un sous-ensemble Ri d'identificateurs de processus à qui Pi demandera l'autorisation d'accéder à la ressource i,j [ 1..N ] : Ri Rj Deux sous-ensembles de 2 processus différents ont obligatoirement au moins un élément en commun (le ou les arbitres) Cela rend donc inutile le besoin de demander la permission à tous les processus, d'où les sous-ensembles Ri ne contenant pas tous les processus i : Ri = K Pour une raison d'équité, les sous-ensembles ont la même taille pour tous les processus i : i est contenu dans D sous-ensembles Chaque processus joue autant de fois le rôle d'arbitre qu'un autre processus 23

Permission par arbitre Algorithme de [ Maekawa, 85 ] (suite) Solution optimale en nombre de permissions à demander et de messages échangés K N et D = K Fonctionnement de l'algorithme Chaque processus possède localement Une variable vote permettant de savoir si le processus a déjà voté (a déjà donné sa permission à un processus) Une file file d'identificateurs de processus qui ont demandé la permission mais à qui on ne peut la donner de suit Un compteur réponses du nombre de permissions reçues Initialisation État non demandeur, vote = faux et file =, réponses = 0 24

Permission par arbitre Algorithme de [Maekawa, 85], fonctionnement (suite) Quand processus Pi veut accéder à la ressource réponses = 0 Envoie une demande de permission à tous les processus de Ri Quand réponses = Ri, Pi a reçu une permission de tous, il accède alors à la ressource Après l'accès à la ressource, envoie un message à tous les processus de Ri pour les informer que la ressource est libre Quand processus Pi reçoit une demande de permission de la part du processus Pj Si Pi a déjà voté (vote = vrai) ou accède actuellement à la ressource : place l'identificateur de Pj en queue de file Sinon : envoie sa permission à Pj et mémorise qu'il a voté vote = vrai 25

Permission par arbitre Algorithme de [Maekawa, 85], fonctionnement (suite) Quand Pi reçoit de la part du processus Pj un message lui indiquant que Pj a libéré la ressource Si file est vide, alors vote = faux Pi a déjà autorisé tous les processus en attente d'une permission de sa part Si file est non vide Retire le premier identificateur (disons k) de la file et envoie à Pk une permission d'accès à la ressource vote reste à vrai 26

Permission par arbitre Algorithme de [Maekawa, 85], problème La vivacité n'est pas assurée par cet algorithme car des cas d'interblocage sont possibles Pour éviter ces interblocages, améliorations de l'algorithme en définissant des priorités entre les processus En datant les demandes d'accès avec une horloge logique En définissant un graphe de priorités des processus 27

Tolérance aux fautes Tolérance aux fautes Les algorithmes décrits dans ce cours ne supportent pas des pertes de messages et/ou des crash de processus Mais adaptation possibles de certains algorithmes pour résister à certains problèmes Ex. pour la méthode par serveur : élection d'un nouveau serveur en cas de crash Peut aussi améliorer la tolérance aux fautes en utilisant des détecteurs de fautes associés aux processus pour détecter les processus morts 28