Cour algorithme Distrib 2eme partie
-
Upload
dimento125 -
Category
Education
-
view
374 -
download
7
Transcript of Cour algorithme Distrib 2eme partie
Architectures et Algorithmes Avancés
Mohamed Mosbah - LaBRI
ENSEIRB Université Bordeaux 1
Nesrine OULED ABDALLAH - ReDCAD
1
Objectifs du cours •Connaître les caractéristiques d’un système distribué (SD)
• Comprendre les concepts et les paradigmes fondamentaux d’un SD, au delà des technologies •Etudier certains problèmes fondamentaux (élection, arbre recouvrant, exclusion mutuelle, pannes)
•Pouvoir raisonner dans un environnement distribué. Par exemple : concevoir des applications distribuées, les tester, les prouver, les valider et les implanter.
2
Exemples de questions abordés
dans ce cours •Comment décrire une exécution répartie ? •Comment déterminer des propriétés globales à partir d’observations locales ?
•Comment coordonner des opérations en l’absence d’horloge commune ?
•Quelles sont les critères de qualité pour une application distribuée ?
•Comment garantir la cohérence (ou la sécurité) d’informations distribuées ?
• Pas sûr que vous aurez toutes les réponses…. 3
Plan du cours
• Introduction aux systèmes distribués
• Architectures des systèmes distribués et communication • Modèles de l’algorithmique distribuée • Calculs locaux et calcul distribué d’arbre recouvrant • Algorithmes d’Election • Algorithmes de Rendez Vous(RDV),algorithme
probabiliste d’élection locale • Terminaison distribuée
• Gestion de la concurrence: Temps, Synchronisation, gestion des conflits
• Implémentation: Plateforme Visidia
4
Cours 1: Introduction aux systèmes distribués
5
I/ Introduction à l’informatique distribuée
•L’informatique répartie : état de fait de plusieurs applications, et une mutation… -Besoin propre des applications
•Intégration : applications séparées, ressources de calcul, ressources de gestion de données, etc •Nouvelles applications: informatique omniprésente
- Possibilités techniques •Interconnexion généralisée : convergence
informatique télécom
• Performance et coût des machines et des réseaux
6
Les progrès technologiques
• Avant les années 80, les ordinateurs étaient encombrants et chers (les systèmes centralisés)
• A partir de la mi 80, deux nouveautés:
- Microprocesseurs (moins chers et très rapide) - LANs et WANs
• Les ordinateurs en réseaux non seulement faisables, mais simples.
7
Technologie + besoins évolution évolution
technologique des besoins banalisation et capillarité structure des entreprises et des
des réseaux de télécommunications organisations : communication et partage (ex. Intranet)
performance des voies de télécommunication accès universel à
l’information (ex. Web)
(débit et fiabilité)
rapport coût/performance des stations
Informatique distribuée "grand public"
convergence informatique et (ex. vidéo interactive) téléphonie
Applications distribuées 8
II/ Définitions d’un SD
Définition [Tanenbaum]: Un ensemble d’ordinateurs indépendants qui apparaît à un utilisateur comme un système unique et cohérent
• Les machines sont autonomes
• Les utilisateurs ont l’impression d’utiliser un seul système.
9
Définition [Lamport]: A distributed system is one on which I can’t do my work if some computer has failed that I never heard of.
Un système réparti est un système qui vous empêche de travailler quand une machine dont vous n’avez jamais entendu parler tombe en panne.
10
Définition (pour ce cours)•Un système distribué est un ensemble d’entités autonomes de calcul (ordinateurs, PDA, processeurs, processus, etc.) interconnectées et qui peuvent communiquer.
• Exemples: - réseau physique de machines
- Un logiciel avec plusieurs processus sur une même machine.
11
Pourquoi des systèmes répartis ?
•Aspects économiques (rapport prix/performance)•Adaptation de la structure d’un système à celle des applications (géographique ou fonctionnelle) •Besoin d’intégration (applications existantes) •Besoin de communication et de partage d’information
•Réalisation de systèmes à haute disponibilité •Partage de ressources (programmes, données, services) • Réalisation de systèmes à grande capacité d’évolution
12
Exemples: • WWW
• Contrôle du trafic aérien • Système de courtage • Banques • Super calcul distribué • Système de fichier distribué • DNS • Systèmes Pair à pair (P2P)
13
Quelques domaines d’application des systèmes répartis
• CFAO, Ingénierie simultanée -Coopération d’équipes pour la conception d’un
produit -Production coopérative de documents -Partage cohérent d’information
• Gestion intégrée des informations d'une entreprise -Intégration de l’existant
• Contrôle et organisation d’activités en temps réel • Centres de documentation, bibliothèques -Recherche, navigation, visualisation multimédia • Systèmes d’aide à la formation
14
Propriétés •Le système doit pouvoir fonctionner (même
en cas de pannes de certains composants), et donner un résultat correct
•Le système doit pouvoir résister à des attaques contre sa sécurité (confidentialité et intégrité, déni de service, …)
•Le système doit pouvoir s’adapter à des changements (modification de composants, sacalabilité, etc)
•Le système doit préserver ses performances 15
III/ Objectifs d’un système distribué • Transparence (Masquer la répartition)
- Uniformité des accès locaux et distants La séparation physique entre machines et les
différences matériels/logiciels pour les accès sont invisibles par l’utilisateur.
- Localisation des ressources non perceptible (nom logique ex: URL http://www.labri.fr/ ) - Migration des ressources possible sans interférence avec la localisation physique
(ex. transférer un objet uniquement par son nom logique sans modification de ce nom et sans modification de l’environnement d’un utilisateur)
16
- Réplication de ressources non visibles - Concurrence d’accès aux ressources non perceptibles (ex. accès à un même fichier ou une table
dans une base de données: mécanisme de verrou ou
de transaction) Invisibilité du parallélisme offert par l’environnement d’exécution
Tolérance aux pannes permettant à un utilisateur de ne pas s’interrompre (ou même
se rendre compte) à cause d’une panne d’une ressource
17
• Ouverture
-Services offerts selon des règles standards qui décrivent la syntaxe et la sémantique de ces services (Interfaces publiées, ex. IDL) - Interopérabilité des matériels (de fournisseursdifférents)
- Portabilité
- Flexibilité (facilité d’utilisation et de configuration) - Extensibilité (ajout/MAJ de composants
sans en affecter les autres)
18
• Mise à l ’échelle (scalability) fonctionne efficacement dans différentes échelles:
-Deux postes de travail et un serveur de fichiers -Réseau local avec plusieurs centaines de postes de travail et serveurs de fichiers - Plusieurs réseaux locaux reliés pour
former un Internet
19
20 20
• Tolérance aux pannes -Pannes franches -Pannes byzantines -Détection de pannes (difficulté et même
impossibilité de détection pour certains systèmes, suspicion de machines) e.g. connexion par un navigateur à un serveur distant qui répond pas !!
-Correction d’erreurs (de fichiers/messages corrompus)
-Reprise sur pannes (techniques de journalisation dans les BD)
(éventuellement système dégradé)
21
• Sécurité - Confidentialité (authentification)
- Intégrité (protection contre les falsification et les corruptions)
- Disponibilité (accès aux ressources) e.g. commerce électronique, banque en ligne.
22
IV/ Systèmes distribués vs parallèles Systèmes Parallèles.
Une machine multiprocesseurs avec un environnement du type SIMD (tous les processeurs exécutent le même programme et ont une vision
uniforme de l’état global du système). Extensible à un réseau de machines asynchrones
fortement couplées
Systèmes distribués. Processus indépendants sur des machines
distinctes et communiquant par échange de messages asynchrones (en général, des réseaux
faiblement couplés). 23
Caractéristiques du parallélisme/distribué
• Objectifs: optimiser les solutions d’un problème (e.g. calcul scientifique, calcul matriciel, tri)• Calcul de complexité : temps et accès mémoire (pas le temps de communication ou nombre de messages)• La topologie est généralement fixe (grille, hypercube, grappes)
24
V/ Intergiciel (Middleware)
• Le middleware (intergiciel) est la couche logicielle située entre les couches basses (systèmes d'exploitation, protocoles de communication) et les applications dans un système informatique réparti (CORBA, EJB, COM, etc.).
25
• Buts:
- Fournir une interface ou API de haut niveau aux applications
- Masquer l’hétérogénéité des systèmes matériels et logiciels sous jacents
- Rendre la répartition aussi invisible (transparente)
que possible - Faciliter la programmation répartie (dévelop-pement, évolution, réutilisation, portabilité des applications)
26
Couches logicielles et matérielles dans un SD (le middleware)
APIs haut niveau
Applications,
services
Middleware système d’exploitation
APIs bas niveau
Réseau, matériel,
27
VI/ Voies d’études des systèmes distribués
• Approche « descriptive» - Etude de modèles de conception
d’applications réparties (client serveur, objets répartis, composants répartis, architecture)
- Etude de diverses classes de systèmes, intergiciels (middleware) et applications, et de leurs modes d’organisation et de fonctionnement
• Approche « fondamentale» : algorithmes distribués
- Etude des principes de base: problèmes
fondamentaux, solutions connues, limites « intrinsèques»
– Exemples : Election d’un chef; Structure de diffusion (arbre recouvrant), Exclusion mutuelle, Nommage,
Détection de la terminaison 28
Une application pratique
• Les virus sur nos machines…
• Solution actuelle: protection individuelle (de sa machine)….
• Limites: vulnérabilité, « oubli», mise à jour régulière, solution locale mais non globale
• Alternative: développer des stratégies globale de « destruction de virus»
29
Difficultés
• Pas de connaissance de l’état global • Absence de temps universel (ou horloge globale) • Non déterminisme (lié souvent au problème du synchronisme)
• Et surtout pas de modèle « universel»
et standard pour l’algorithmique distribuée 30
Handover/ mobilité
RéceptionTV en modeIP
WiFi
sur PDA
WiMAX
Carteà WiFi
WiMAX Serveurd'adaptati
on & de diffusion Reception TV
Zone classique Site de diffusion TV Réseau Local
DVB IP
RéceptionTV en modeIP (DomaineIP)
sur portable CarteDVB T DVB
1 Cable
Réception TV Reception TVclassique+ DVB T Internet (Web +Mail)
RéceptionTV en modeIP
Est ce que ça fonctionne ? Sécurité ? 31
Exemples de problèmes fondamentaux
• Comment décrire une exécution répartie ? • Comment déterminer des propriétés globales à partir d’observations locales ? • Comment coordonner des opérations en l’absence d’horloge commune ? • Quelles sont les critères de qualité
pour une application distribuée ? • Comment garantir la cohérence
(ou la sécurité) d’informations distribuées ? 32
Vers des modèles
• Modéliser - pour représenter un système en
simplifiant divers aspect du réel - pour maîtriser la complexité
- Pour observer et comprendre le comportement du système réel
- pour prédire ou aider à commander le comportement d’un système
- pour prouver ce comportement à l’aide de techniques formelles
33
• Nécessité de simplifier et maîtriser la complexité des systèmes et des algorithmes distribués
• Difficulté de l’algorithmique distribuée / centralisée:
- Pas de connaissance de l’état global - Absence de temps universel (ou horloge globale) - Non déterminisme (lié souvent au problème du synchronisme) - Et surtout pas de modèle
« universel» et standard pour l’algorithmique distribuée
34
Modèles de communication synchrone /asynchrone
Synchrone
on se voit à 12h
ok on se voit à
12h Même notion de temps, transmission
instantanée, généralement bornée 35
• Communication asynchrone:
mail: on se voit à 12h
10H
10h45 ok ok
11h:15
est ce qu’il sait que ack ok 11h:45 j’ai lu sa réponse
est ce qu’il sait ack ack 12h15 que j’ai ack ok
36
Architecture de systèmes
et communication
37
Les aspects matériels
• Système distribué en opposition à système centralisé
• Vision matérielle d’un système distribué: architecture matérielle - Machine multiprocesseurs avec mémoire-Cluster (grappe) d’ordinateurs dédiés au calcul/traitement massif parallèle
- Ordinateurs standards connectés en réseau • Vision logicielle d’un système distribué Ensemble d’éléments logiciels s’exécutant
sur un réseau d’ordinateurs 38
Architecture logicielle/matérielle
• Composants logiciels: organisation ? Coopération ? Communication ?
• Instanciation de composants logiciels sur
un réseau « réel» de machines. • Choix de l’architecture adéquate:
- Subdivision des fonctionnalités
- Structuration de l’application
- Réduction de la complexité 39
Architecture client serveur
• Communication réalisée par dialogue entre processus deux à deux.
Un processus est le client, l’autre le serveur.
• Les processus forment un système coopératif.
• Le résultat de cette coopération se traduit par un échange de données,
le client réceptionne les résultats finaux livrés par le serveur.
40
LE CLIENT/SERVEUR
• Communication entre processus deux à deux: un client, un serveur;
• Ces processus forment un système coopératif: -le client réceptionne les résultats finaux délivrés par le serveur.
Requête Client Serveur
Réponse Application Service
Modèle client/serveur ==> répartition des services plutôt que l’application elle même.
41
UTILISATION DU MODÈLE C/S
• S’étend de plus en plus vers tous les domaines d’activités :
- Gestion des bases de données, - Systèmes transactionnels,
- Systèmes de messagerie, Web, Intranet,- Systèmes de partage des données, - Calcul scientifique - ...
42
Serveurs de fichiers
• Les appels sur le réseau concernent les opérations de lecture écriture
des fichiers.
• Aucun filtrage n ‘est effectué sur les données échangées. Appel de fichiers
Fichiers
Serveur
Client
Client
43
Serveurs de bases de données
• Les données reçues par l’application sont le résultat de l’exécution de requêtes SQL.
• Cette exécution se fait par le serveur du SGBD. Appels SQ L
Données
BD
Serveur de SG BD
Client
Client
44
Serveurs de transactions
• Utilisés pour implanter des systèmes transactionnels (OLTP). Le client invoque une procédure à distance qui implante une transaction.
• Le serveur de transactions (ou Moniteur de transactions: MT) exécute cette procédure.
Appels de procédure SQ L
BD
Serveur de SG BD M oniteur de Trans.
Application
Application
45
Serveurs de groupeware
• Le rôle du serveur de groupeware (ou collecticiel) est de mettre en commun et/ou de faire circuler des documents (multimédia) au sein d ’une entreprise.
• On utilise parfois la technique dite du Push.
Message du groupeware
BD
Serveur de
groupeware Application
Application
46
Serveurs d’informations
• Ce sont des serveurs qui mettent certains documents (documents HTML, images,
…) à la disposition des clients
• C’est le cas des serveurs HTTP, FTP, …
• Peuvent utiliser des programmes auxiliaires (ex. programmes CGI,
proxys) pour augmenter leur fonctionnalité.
Requête HTTP
Document
Serveur HTTP
Browser
Browser 47
Besoins applicatifs: calcul intensif
• Objectifs : réduire le temps de résolution d’un problème en utilisant un ordinateur parallèle (avec plusieurs processus) • Principe: division d’un algorithme en tâches pouvant s’exécuter en même temps sur des processus différents • Exemples d’applications:
- Calcul scientifique
- Météo
- Bioinformatique
- Applications nucléaires
48
Classification des architectures parallèles
• Taxonomie proposée par Flynn dans les années 60: - SISD (Single Instruction Single Data): c’est ce qu’on trouve sur une station de travail
- SIMD (Single Instruction Multiple Data): plusieurs processeurs, qui exécutent en parallèle les mêmes instructions sur plusieurs données
- MISD (Multiple Instruction Single Data): exécuter plusieurs instructions sur la même donnée (pas d’exemple connu)
- MIMD (Multiple Instruction Multiple Data): plusieurs processeurs qui opèrent de façon indépendantes (ou non) sur leurs données
49
Machines parallèles
• Architectures fortement couplées
• Tenir compte de l’architecture de la machine
• Repenser les applications
• Modèle de programmation parallèle
• La façon de programmer n’est pas indépendante de
la machine utilisée • Découpage d’une tâche en tâches élémentaires (diviser pour régner)
50
Architecture de type grappes
•Une grappe (cluster) est une collection de machines interconnectées, utilisée comme une ressource de calcul unifiée
•Il existe des grappes commerciales clés en main •Une grappe « Beowulf» se définit par les propriétés suivantes : - composants à grande diffusion - composants réseau à faible coût
- système d ’exploitation « open source » - hardware non propriétaire - logiciel « open source »
51
Types de grappes
• Grappes de calculs:
-Mise en commun de ressource de calcul
- Assurer la disponibilité de la ressource principalement en cas
de panne de l’un des serveurs. • Grappes de répartition de charge
- Typiquement utilisé pour les services web (mais peut être utilisé pour d’autres applications). Une requête arrive sur un seul nœud(visible de l’extérieur), et sera envoyée vers un autre en fonction de la charge de chacun des
nœuds.
• Grappes de haute disponibilité
52
Les grilles
• de stations de travail (desktop grids) et/ou de PC "volontaires"
• de grappes dédiés
=> toutes combinaisons possibles
• réseau sous-jacent si possible pas trop lent (ex
WAN haut débit comme Renater 3 Gigabits/sec)
=> difficile problème provenant de la non
unicité du
domaine d’administration 53
Plus généralement
• Si le matériel est important, le logiciel l’est beaucoup plus …. • Systèmes distribués : systèmes complexes ! •Objectif : développement de logiciels fiables et
robustes • Prise en compte spécifité des systèmes distribués - Temps de communication, pannes
• Développer des algorithmes dédiés aux systèmes distribués : algorithmique distribuée
• Synchronisation et coordination entre processus distants • Entente sur des valeurs communes et cohérence globale dans un contexte non fiable
• Adaptation des problèmes classiques en parallélisme • Problèmes typiques des systèmes distribués 54
• Les algorithmes distribués s’appuie sur des caractéristiques du système
• Caractéristiques de la communication
- Fiable ou non, temps de propagation borné ou pas
• Caractéristiques des éléments formant le système
- Fiable, pouvant se planter, pouvant envoyer des
messages erronés, etc.
• Architecture (topologie) -Chaîne
-Arbre -Anneau -Grille 55
Conception de logiciel pour les systèmes
distribués • Importance du système d’exploitation - Donne l’image de la machine pour l’utilisateur - Influence la façon de programmer la machine
• Système d’exploitation entre l’architecture matérielle et les applications
- Système d’exploitation pour un système distribué dépend • de l’architecture sous jacente • des applications à exécuter
-Applications indépendantes -Applications parallèles
• Faiblement couplé • Fortement couplé
-Système d’exploitation
56
Système d’exploitation pour système distribué
• Multiprocesseurs à mémoire partagée - Système d’exploitation à temps partagé de type Unix
• Plusieurs processeurs au lieu d’un seul
• Illusion d’une machine mono processeur pour l’utilisateur - Une seule copie du système d’exploitation sur la machine
• Un processus peut s’exécuter sur n’importe quel processeur de la machine
• Une file des processus prêts à s’exécuter conservée en mémoire partagée
• Synchronisation pour l’accès aux structures de données partagées du noyau
- Section critique pour l’exécution de l’ordonnanceur qui gère la file des processus prêts
• Communication par mémoire partagée
57
Système d’exploitation pour système distribué
• Multicomputers - Système d’exploitation faiblement couplé
(network operating system) • Indépendance des machines
-Un programme peut s’exécuter localement sans le réseau -Réseau permet le partage de ressources entre une communauté d’utilisateurs
» Imprimante, serveur de fichiers » Connexion à distance
• Une copie du système d’exploitation sur chaque machine -Système standard + services distribués (exemple NFS) - Hétérogénéité
- Modèle client/serveur
• Communication par fichiers partagés - NOW, Internet, GRID (Grands Systèmes Informatiques
Distribués) 58
Système d’exploitation pour système distribué
• Système intégré -Vision d’une machine unique (Single System Image)- Machine uni processeur virtuelle
• La multiplicité des ressources et leur distribution doivent être transparentes pour l’utilisateur
• Nœuds anonymes
• Un même système d’exploitation s’exécute surchaque machine
- Chaque machine possède sa copie locale du système d’exploitation
- Communication par messages
• Grappes de calculateurs
59
Représentation : abstraction
un graphe
60
A venir : Modélisation d’un système distribué
• Système distribué : graphe (non orienté, connexe, simple)
• sommet : processus
• arête : canal de communication • algorithme distribué local : algorithme qui s’exécute sur chaque sommet (en utilisant uniquement le contexte local)
61
Les réseaux anonymes /avec identités
• anonymes: pas d’identités (numéros distincts. e.g. IP)
•avec identités (chaque sommet possède une identité (un numéro) unique)
En général, il est plus facile de construire un algo sur des graphes avec identités.
62
• L’état d’un processus est codé par une étiquette:
• Le changement d’état : changement d’étiquette
• Les algorithmes : arbre recouvrant, élection, terminaison, exclusion mutuelle.
63
Modèle de l’algorithmique distribuée
64
Quelques rappels sur les graphes
• Les graphes modélisent une grande variété de
problèmes: réseaux de communication, réseaux routiers,
structures de molécules, etc.
• On se ramène à l’étude de sommets et d’arcs.
• Un graphe simple G est formé de deux
ensembles : un ensemble V de sommets et un
ensemble E d’arêtes. Chaque arête lie deux sommets
(qui sont dits adjacents ou voisins)
• On note G=(V,E) 65
Exemple • V = {u,v,w,x,y,z} v
a b • E = {a,b,c,d,e,f} u w
c d • Le degré d’un graphe: z x f Nombre d’arêtes adjacentes
y e
deg(x) = 3
Un graphe est régulier de degré r si tousses sommets sont de degré r.
66
Lemme de poignées de main: Soit G=(V,E), la somme des degrés des sommets de V est le double du nombre d’arêtes.
Corollaire : un graphe simple a un nombre pair de sommets de degré impair.
Application: est il possible de relier 27 ordinateurs de sorte que chaque appareil
soit relié avec exactement trois autres ?
67
Terminologie : graphes
•Chaîne : suite de sommets reliés entre eux par une arête. •Cycle : chaîne qui revient à son point de départ. •Graphe connexe : pour toute paire de sommets, il existe
une chaîne qui les relie.
•Arbre : graphe connexe sans cycle. •Anneau : graphe formé d’un cycle.
•Longueur d’une chaîne : nombre d’arêtes qui composent la chaîne. •Distance entre deux sommets : longueur de la plus courte chaîne joignant les deux sommets. •Diamètre d’un graphe : maximum des distances entre les
sommets d’un graphe.
•Médian: un sommet qui minimise la somme des distances aux autres sommets.
•Sous graphe : G=(V,E) est sous graphe de G’=(V’,E’) si V est sous ensemble de V’ et E est sous ensemble de E’.
68
69
Arbre recouvrant
• Soit G un graphe. Un arbre recouvrant de G est un sous graphe de G qui est un arbre contenant tous les sommets de G
Exemple :
70
•
•
71
I/ Notion d’algorithme distribué
• Ces transitions peuvent s’effectuer suite à des
événements (internes ou échange de message)
• Un algorithme distribué sur un système
distribué
S est une collection de transitions locales à
réaliser séquentiellement par chaque process de S.
72
• Processus:
- Les instructions d’un processus sont considérées comme atomiques.
- Il possède une mémoire locale
- Il possède un état local (ensemble de ses données et
des valeurs de ses variables locales) - Il peut (ou non) avoir un identifiant
- Pas ou peu de connaissance des autres processus et de leurs états (il peut connaitre l’état des voisins)
- Il s’exécute en parallèle avec les autres processus
73
• Simulation d’une mémoire partagée : 1 process à part qui est chargé uniquement de la communication.
74
indiscernables. 75
76
77
78
2.
79
80
81
es
82
83
84
terminer 85
86
87
88
89
e
90
91
92
93
y
94
95
96
Une
97
98
99
100
101
102
103
104
105
106
107
108