les systèmes distribués, Exercises of Information Systems

un système distribué est une collection de processus qui échanges des messages

Typology: Exercises

2018/2019

Uploaded on 01/16/2023

Redha_C1978
Redha_C1978 🇩🇿

1 document

1 / 9

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
RE51 Cours
Les systèmes distribués
Objectifs
Concevoir, implémenter et analyser différents protocoles ou algorithmes distribués basés sur le principe
de passage de messages entre processus.
Les algorithmes distribués se différentient par :
La méthode de comunication inter-processus
Mémoire partagée (mémoire distribuée, ou distributed shared memory)
Diffusion (broadcast)
Point à point
Le modèle temporel (timing model)
Synchrone : horloge globale ; l’algorithme distribué se déroule alors sous forme de tours
Asynchrone : Les événements sont déclenchés d’une manière asynchrone
Partiellement asynchrone : Les horloges sont déclenchées d’une manière synchrone
Le modèle dans f ( ?)
Pause d’un processus
Le processus peut avoir un comportement aléatoire
Perte de message
Un réseau est fiable si :
Il n’y a pas de perte de messages
Il n’y a pas duplication de messages
Le temps de délivrance d’un message est fini
Le problème à résoudre :
La communication
Accès à une base de données distribuée
Application temps réel
Un système distribué est caractérisé par :
Son non-déterminisme : On ne peut prédire le déroulement exact de l’algorithme, on ne peut que
comprendre certaines propriétés de l’algorithme.
L’indépendance des activités des processus
Le nombre de sites comportant le système distribué est inconnu
La topologie du réseau est inconnue
La délivrance des messages est incertaine
Un mécanisme éventuel de tolérance aux pannes
RE51 Cours
pf3
pf4
pf5
pf8
pf9

Partial preview of the text

Download les systèmes distribués and more Exercises Information Systems in PDF only on Docsity!

Les systèmes distribués

Objectifs

Concevoir, implémenter et analyser différents protocoles ou algorithmes distribués basés sur le principe de passage de messages entre processus.

Les algorithmes distribués se différentient par :

  • La méthode de comunication inter-processus
    • Mémoire partagée (mémoire distribuée, ou distributed shared memory)
    • Diffusion (broadcast)
    • Point à point
  • Le modèle temporel (timing model)
    • Synchrone : horloge globale ; l’algorithme distribué se déroule alors sous forme de tours
    • Asynchrone : Les événements sont déclenchés d’une manière asynchrone
    • Partiellement asynchrone : Les horloges sont déclenchées d’une manière synchrone
  • Le modèle dans f ( ?)
    • Pause d’un processus
    • Le processus peut avoir un comportement aléatoire
    • Perte de message
  • Un réseau est fiable si :
    • Il n’y a pas de perte de messages
    • Il n’y a pas duplication de messages
    • Le temps de délivrance d’un message est fini

Le problème à résoudre :

  • La communication
  • Accès à une base de données distribuée
  • Application temps réel

Un système distribué est caractérisé par :

  • Son non-déterminisme : On ne peut prédire le déroulement exact de l’algorithme, on ne peut que comprendre certaines propriétés de l’algorithme.
  • L’indépendance des activités des processus
  • Le nombre de sites comportant le système distribué est inconnu
  • La topologie du réseau est inconnue
  • La délivrance des messages est incertaine
  • Un mécanisme éventuel de tolérance aux pannes

Définitions

Un système distribué est une collection de processus qui échangent des messages via un système de communication.

Le système de communication (S.C.) est constitué de connexions de logiciels. Le comportement des connexions peut être celui de la discipline FIFO (First In First Out).

Le S.C. et le S.D. sont modélisés par un graphe :

Les topologies

La meilleure : un graphe complet G(V, E). Il en existe d’autres :

  • En étoile
  • Hypercube
  • Grille

L’élection distribuée

Soit un système distribué ; l’objectif est d’élire un site particulier pour s’occuper d’une fonction donnée. Ceci permet d’utiliser par exemple le paradigme client/serveur.

L’élection permet de désigner un serveur. Les messages clients vers le serveur représentent alors des requêtes de service ; des réponses peuvent le cas échéant être envoyées au client.

Message utilisé

ELECTION : Message envoyé de i vers j conenant un identifiant coordinateur

ELU : Message de fin, indiquant le résultat de l’élection

Code des algorithmes

Lors de la réception de INIT par un initiateur Faire participe <- Vrai envoyer à son voisin de gauche ELECTION(id_i) Fin

Lors de la réception du message ELECTION(id) par si depuis sj Faire Si (id > id_i) Alors participe <- Vrai envoyer au suivant ELECTION(id) Sinon Si (id < id_i) Et (participant = Faux) Alors participant <- Vrai envoyer à son voisin ELECTION(id_i) Sinon Si (id = id_i) Alors id_c <- id_i envoyer à son voisin ELU(id_c) Finsi Fin

Lors de la réception de ELU(id) Faire id_c <- id participe <- Faux Si (id != id_i) Alors envoyer à son voisin ELU(id) Finsi Fin

Cas d’un anneau bidirectionnel

Hypothèses

L’anneau est maintenant bidirectionnel ; chaque site ignore le nombre total de sites présents, et les sites sont désignés d’une manière quelconque sur l’anneau.

Nous définirons des primitives adaptées à la communication sur un anneau bidirectionnel :

  • envoyerDouble()
  • faireSuivre()
  • Repondre()

Principe

L’algorithme procède par élections primaires de proche en proche sur des distances croissantes suivant des puissances de 2.

Un site battu se contente de faire suivre les messages d’un coté vers l’autre.

Variables propres à chaque site

  • idi : entier
  • etat : Flag NONCONCERNE, BATTU, ELU, CANDIDAT, initialisé à NONCONCERNE.
  • lgmax : entier
  • vainqueur : entier
  • nbrep : entier initialisé à 0
  • repOk : booléen initialisé à vrai

Messages utilisés

  • CANDIDATURE(id, lg, lgmax)
  • FAIRESUIVRE(bool, id)
  • REPONSE(bool, id)

Code de l’algorithme

Lors de la réception de INIT par s_i Faire etat <- CANDIDAT lgmax <- 1 Tant que (etat = CANDIDAT) Faire nbrep <- 0

Lors de la réception de Termine(id) Faire Si (vainqueur != id) Alors faireSuivre TERMINE(id) vainqueur <- id etat <- NONCONCERNE Finsi Fin

Algorithme d’exclusion mutuelle

Nous allons dorénavant nous intéresser à un algorithme d’exclusion mutuelle sur un anneau avec regénération de jeton (MISTRA ?).

La mise en oeuvre de l’exclusion mutuelle consiste à définir un mécanisme d’arbitrage.

Quelques exemples d’application : Sur le protocole Token-Ring, avoir le jeton est synonyme d’avoir le privilège d’utiliser le média de communication. On utilise aussi des jetons lors d’accès à des ressources critiques, comme un disque dur ou une base de données.

Le jeton est matérialisé par un message spécial qui donne le privilège d’accès à celui qui le détient.

Toutefois, des problèmes importants peuvent se poser :

  • Perte du jeton
  • Panne de liaison
  • Panne d’une machine
  • altération du message jeton

La solution consiste à regénérer un jeton. Bien entendu, il faut éviter de regénérer plusieurs jetons (c’est le cas avec des algorithmes distribués qui utilisent le principe de la loi de garde).

Hypothèses

Le système de communication est en anneau. Il y a des possibilités de pannes et d’alteration de messages, mais pas de reprise sur panne.

Principes

Le principe de la solution consiste à utiliser 2 jetons, ping et pong. A chacun des deux jetons est associé une valeur, nbPing et nbPong. Ces deux valeurs sont liées par l’invariant nbP ing + nbP ong = 0, avec initialement nbP ing = 1 et nbP ong = − 1. Ces deux valeurs comptent le nombre de rencontres des deux jetons.

Variables locales

  • mi : entier permettant de mémoriser le nombre associé au dernier jeton vu par Pi, initialisé à 0.
  • nbP ing, nbP ong : entiers initialisés à 1 et -1 respectivement.

Message utilisé

JETON(J, nbJ), J étant ping ou pong.

Code des algorithmes

Lors de la réception du message JETON(PING, nbPing) Faire Si (m_i = nbPing) Alors nbPing <- nbPing + 1 nbPong <- - nbPing Sinon m_i <- nbPing Finsi faireSuivre le message au voisin Fin

Lors de la réception du message JETON(PONG, nbPong) Faire Si (m_i = nbPong) Alors nbPong <- nbPong - 1 nbPing <- - nbPong Sinon m_i <- nbPong Finsi Fin

Lors de la rencontre des 2 jetons Faire nbPing <- nbPing + 1 nbPong <- nbPong - 1 Fin