I
Introduction
aux systèmes distribués
Définitions
• 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.
• Définition [Lamport]: A distributed system is one on which I can’t
do my work 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.
Définitions
• Un système distribué est un ensemble d’entités autonomes de calcul
(ordinateurs, PDA, processeurs, processus, processus léger etc.)
interconnectées et qui peuvent communiquer.
• Les machines qui font partie d’un système distribué peuvent être des
ordinateurs, des serveurs physiques, des machines virtuelles, des
conteneurs ou tout autre nœud qui peut se connecter au réseau,
disposer d’une mémoire locale et communiquer en passant des
messages.
• Ici, Systèmes répartis Systèmes distribués (distributed systems)
Définitions systèmes d’exploitation distribués
• Le terme de système d’exploitation distribué désigne une collection de
processus coopérant dans le but de réaliser une application spécifique.
• Les fonctions réalisées par ces différents processus peuvent être de
différentes natures :
• soit de calcul
• soit de base : exclusion mutuelle
• soit de contrôle (liées à la distribution) : détection de la
terminaison, cohérence,...
• Les systèmes d’exploitation distribués ne calculent pas de résultats (au
sens propre du terme) aux termes desquels ils sont terminés mais ils
rendent des services : ils offrent des moyens aux applications réparties.
Définitions systèmes d’exploitation distribués
• Ces systèmes permettent :
• d’assurer la communication et le partage d’informations entre des
applications ;
• d’assurer l’exécution parallèle de programmes sur des processeurs différents ;
• et de partager des ressources physiques et logiques sur un ensemble
d’utilisateur.
• Ces systèmes nécessitent des mécanismes :
• de désignation, de transferts et de partages d’informations ;
• de contrôle de la cohérence de ces informations ;
• de diffusion d’informations ;
• de synchronisation, de placement de processus et de détection de leur
terminaison ;
• de contrôle global du système et d’élection ;
Définitions systèmes d’exploitation distribués
• d’ordonnancement de processus ;
• d’exclusion mutuelle ;
• de reprise sur panne ;
• de transaction ;
• d’administration;
• ...
Fonctionnement des systèmes distribués
• Les systèmes distribués fonctionnent de deux façons générales :
1.Chaque machine travaille vers un objectif commun et l’utilisateur
final voit les résultats comme une unité cohérente.
2.Chaque machine a son propre utilisateur final et le système distribué
facilite le partage des ressources ou des services de communication.
• Bien que les systèmes distribués puissent parfois être obscurs, ils
présentent généralement trois caractéristiques principales : tous les
composants fonctionnent simultanément, il n’y a pas d’horloge globale
et tous les composants tombent en panne indépendamment les uns des
autres.
Exemple 1 de systèmes distribués
• Serveur de fichiers
• Accès aux fichiers de l'utilisateur quelque soit la machine utilisée
• Machines d’un département
• Clients : INF3XXX
• Sur toutes les machines : /home/inf3 est le « home directory » de l'utilisateur
inf3
• Physiquement : fichiers se trouvent uniquement sur le serveur
• Virtuellement : accès à ces fichiers à partir de n'importe quelle machine cliente
en faisant « croire » que ces fichiers sont stockés localement
• Intérêts
• Accès aux fichiers à partir de n'importe quelle machine
• Système de sauvegarde associé à ce serveur
• Transparent pour l'utilisateur
• Inconvénients
• Si réseau ou le serveur plante : plus d'accès aux fichiers
Exemple 2 de système distribué
• Web
• Un serveur web auquel se connecte un nombre quelconque de
navigateurs web (clients)
• Accès à distance à de l'information
• Accès simple
• Serveur renvoie une page HTML statique qu'il stocke localement
• Traitement plus complexe
• Serveur interroge une base de données pour générer dynamiquement le
contenu de la page
• Transparent pour l'utilisateur : les informations s'affichent dans
son navigateur quelque soit la façon dont le serveur les génère
Autres exemples de systèmes distribués
• Réseau physique de machines
• Un logiciel avec plusieurs processus sur une même machine
• Contrôle du trafic aérien
• Banques
• Super calcul distribué
• Système de fichier distribué
• DNS
• Systèmes Pair-à-pair (P2P)
• IoT (Internet des objets)
Avantages des systèmes distribués
• Aspects économiques : Mise en commun d'un grand nombre de
ressources à faible coûts
• Bon rapport performance/prix
• Puissance globale virtuellement illimitée
• Supérieure à celle des gros calculateurs
• Disponibilité et flexibilité
– Un élément peut tomber en panne sans bloquer tout le système
– Distribution de la charge
• Réponse à la distribution géographique de certains systèmes existants
– Réplication locale des ressources globales
Avantages des systèmes distribués
• Partage de ressources coûteuses entre plusieurs utilisateurs/machines
• Accès à distance à une ressource indisponible en local
• Accès aux mêmes ressources depuis tous les endroits du système
• Un même service peut être utilisé par plusieurs acteurs, situés à des
endroits différents
• Système de fichiers : utiliser ses fichiers à partir de n'importe quelle
machine
• Imprimante : partagée entre toutes les machines
• Optimiser l'utilisation des ressources disponibles
• Calculs scientifiques distribués sur un ensemble de machines
• Système plus robuste
• Duplication pour fiabilité : deux serveurs de fichiers dupliqués, avec
sauvegarde
• Plusieurs éléments identiques pour résister à la montée en charge ...
Inconvénients des systèmes distribués
• Logiciels de gestion difficiles à concevoir
• Peu d'expérience ou succès dans ce domaine
• Complexité imposée par la transparence
• Problèmes inhérents aux communications
• Communications explicites si il n’y a pas de mémoire partagée
• Lenteur, saturation, perte de messages
• Partage et distribution de données impose mécanismes
complexes
• Synchronisation
• Sécurité
Inconvénients des systèmes distribués
• Si problème au niveau du réseau
• Le système marche mal ou plus du tout
• Bien souvent, un élément est central au fonctionnement du système :
serveur
• Si serveur plante : plus rien ne fonctionne
• Goulot potentiel d'étranglement si débit d'information très
important
• Sans élément central
• Gestion du système totalement décentralisée et distribuée
• Nécessite la mise en place d'algorithmes +/- complexes
Système distribué vs un système centralisé
• Système centralisé
• Tout est localisé sur la même machine et accessible par le
programme
• Système logiciel s'exécutant sur une seule machine
• Les applications accèdent localement aux ressources
nécessaires (données, code, périphériques, mémoire ...).
• Système distribué
• Ensemble d'ordinateurs indépendants connectés en réseau et
communiquent via ce réseau.
• Cet ensemble apparaît du point de vue de l'utilisateur comme
une seule entité.
Système distribué vs un système centralisé
Système distribué vs un système centralisé
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).
• Pas de consensus sur ces définitions…
Architecture de systèmes distribués
• On distingue deux types d’architecture des systèmes distribués :
architecture fortement couplée et architecture faiblement couplée.
• Dans une architecture fortement couplée, la communication est faite
via une mémoire commune : les problèmes sont plus simples à
résoudre. Ainsi, l’exclusion mutuelle peut être simplement résolu par
un blocage du bus (ensemble des lignes de communication
connectant les différents composants d’un ordinateur. Exemple : clé
usb) comme en mono processeur.
Architecture de systèmes distribués
• Dans une architecture faiblement couplée, chaque processeur
possède sa propre mémoire locale. Les communications se font via
des messages avec tous les problèmes liés aux réseaux (perte
d’informations, ...)
Architecture de systèmes distribués
• Il est à noter qu’il existe aussi une architecture mixte qui dispose de
différent niveaux de mémoire (commune, privée)
• NB : Une architecture parallèle ne veut pas dire système distribué.
Ainsi une machine biprocesseurs peut être Solaris ou Linux bien que
ni l’un ni l’autre ne soit un système d’exploitation distribué : ce sont
des systèmes d’exploitation symétriques.
Visions des systèmes distribués
• Deux visions : matérielle et logicielle
• Vision matérielle d'un système distribué : architecture matérielle
• Machine multi-processeurs avec mémoire partagée
• Cluster 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é (SE distribué)
• Système logiciel composé de plusieurs entités s'exécutant indépendamment
et en parallèle sur un ensemble d'ordinateurs connectés en réseau.
• Il existe une relation étroite entre les applications distribuées et les systèmes
d'exploitation.
• Dans un premier lieu, la mise en œuvre des applications distribuées dépend des systèmes
d'exploitation qui gèrent les différentes plateformes matériels (c'est-à-dire les services qu'ils
offrent).
• Dans le second lieu, les systèmes d'exploitation eux-mêmes peuvent être distribués.
Types de systèmes distribués
Les systèmes distribués relèvent généralement de l’un des quatre
différents modèles d’architecture de base :
1.Client-serveur : Les clients contactent le serveur pour obtenir des
données, puis les formatent et les affichent à l’utilisateur final.
L’utilisateur final peut également effectuer une modification depuis le
côté client et la renvoyer au serveur pour la rendre permanente.
2.Trois niveaux : Les informations relatives au client sont stockées dans
un niveau intermédiaire plutôt que sur le client afin de simplifier le
déploiement de l’application. Ce modèle d’architecture est le plus
courant pour les applications Web.
Types de systèmes distribués
1.N-tier : Généralement utilisé lorsqu’une application ou un serveur doit
transmettre des demandes à des services d’entreprise supplémentaires
sur le réseau.
2.Peer-to-peer : Il n’y a pas de machines supplémentaires utilisées pour
fournir des services ou gérer des ressources. Les responsabilités sont
uniformément réparties entre les machines du système, appelées pairs,
qui peuvent servir de client ou de serveur.
Modélisation d ’un système distribué
• Système distribuée : 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).
Modélisation d ’un système distribué
Distinction entre “système” et “application”
• Système : gestion des ressources communes et de l’infrastructure, lié de manière
étroite au matériel sous-jacent
• Système d’exploitation : gestion de chaque élément
• Système de communication : échange d’information entre les éléments
• Caractéristiques communes : cachent la complexité du matériel et des
communications, fournissent des services communs de plus haut niveau d’abstraction
• Application : réponse à un problème spécifique, fourniture de services à ses
utilisateurs (qui peuvent être d’autres applications)
• Utilise les services généraux fournis par le système
• La distinction n’est pas toujours évidente, car certaines applications peuvent
directement travailler à bas niveau (au contact du matériel). Exemple : systèmes
embarqués, réseaux de capteurs.
Propriétés des systèmes distribués
• Un système distribué (distributed system) est un ensemble composé
d’éléments reliés par un système de communication
• les éléments ont des fonctions de traitement (processeurs), de
stockage (mémoire), de relation avec le monde extérieur
(capteurs, actionneurs)
• Les différents éléments du système ne fonctionnent pas
indépendamment mais collaborent à une ou plusieurs tâches
communes.
Conséquence : une partie au moins de l’état global du système
est partagée entre plusieurs éléments (sinon, on aurait un
fonctionnement indépendant)
Propriétés des systèmes distribués
• Une des caractéristiques essentielles d’un tel système distribué est
l’absence d’état global perceptible à un instant donné par un
observateur.
• Les processus ne "connaissent” que les événements qu’ils ont
générés ;
• Les processus ne connaissent que les messages qu’ils ont reçus ou
envoyés : ils ne connaissent pas “l’état” du réseau (ce qui y circule)
;
• Il n’y a pas de relation naturelle d’ordre strict sur des événements
ayant lieu sur des machines différentes
Propriétés des systèmes distribués
• Système distribué = éclaté
• Connaissance des éléments formant le système : besoin d'identification et de
localisation
• Gestion du déploiement et de la présence d'éléments essentiels
• Communication à distance est centrale
• Techniques et protocoles de communication
• Contraintes du réseau : fiabilité (perte de données) et temps de propagation
(dépendant du type de réseau et de sa charge)
• Naturellement concurrent et parallèle
• Chaque élément sur chaque machine est autonome
• Besoin de synchronisation, coordination entre éléments distants et pour
l'accès aux ressources (exclusion mutuelle ...)
Propriétés des systèmes distribués
• Hétérogénéité
• Des machines utilisées (puissance, architecture matérielle...)
• Des systèmes d'exploitation tournant sur ces machines
• Des langages de programmation des éléments logiciels formant le
système
• Des réseaux utilisés : impact sur performances, débit, disponibilité ...
• Réseau local rapide
• Internet
• Réseaux sans fil
Propriétés des systèmes distribués
• Fiabilité des systèmes distribués
Nombreux points de pannes ou de problèmes potentiels:
• Réseau
• Une partie du réseau peut-être inaccessible
• Les temps de communication peuvent varier considérablement selon la charge du réseau
• Le réseau peut perdre des données transmises
• Machine
• Une ou plusieurs machines peut planter, engendrant une paralysie partielle ou totale du
système
• Peut augmenter la fiabilité par redondance, duplication de certains éléments
• Mais rend plus complexe la gestion du système
Propriétés des systèmes distribués
• Fiabilité des systèmes distribués
• Tolérance aux fautes
• Capacité d'un système à gérer et résister à un ensemble de problèmes
• Le système doit pouvoir fonctionner (au moins de façon dégradée) même
en cas de défaillance de certains de ses éléments
• Le système doit pouvoir résister à des perturbations du système de
communication (perte de messages, déconnexion temporaire,
performances dégradées)
• Le système doit pouvoir facilement s'adapter pour réagir à des
changements d’environnement ou de conditions d’utilisation.
Propriétés des systèmes distribués
• Sécurité des systèmes distribués
• Nature d'un système distribué fait qu'il est beaucoup plus sujet à
des attaques
• Communications à travers le réseau peuvent être interceptées
• On ne connaît pas toujours bien un élément distant avec qui on
communique
• Le système doit pouvoir résister à des attaques contre sa sécurité (violation
de la confidentialité, de l’intégrité, usage indu de ressources, déni de service)
• Solutions
• Connexion sécurisée par authentification avec les éléments distants
• Cryptage des messages circulant sur le réseau
Propriétés des systèmes distribués
Transparence
• Fait pour une fonctionnalité, un élément d'être invisible ou caché à l'utilisateur
ou un autre élément formant le système distribué
• Devrait plutôt parler d'opacité dans certains cas ...
• But: cacher l'architecture, le fonctionnement de l'application ou du système
distribué pour apparaître à l'utilisateur comme une application unique cohérente
• L'ISO définit plusieurs transparences (norme RM-ODP)
• Accès, localisation, concurrence, réplication, mobilité, panne, performance,
échelle
Propriétés des systèmes distribués
• Transparence d'accès : L’utilisateur accède à une ressource locale ou
distante d’une façon identique.
• Accès à des ressources distantes aussi facilement que localement
• Accès aux données indépendamment de leur format de représentation
• Transparence de localisation
• Accès aux éléments/ressources indépendamment de leur localisation. L’utilisateur
ignore la situation géographique des ressources. Transparence à la migration.
• Transparence de concurrence
• Exécution possible de plusieurs processus en parallèle avec utilisation de ressources
partagées
• Transparence de réplication
• Possibilité de dupliquer certains éléments/ressources pour augmenter la fiabilité
Propriétés des systèmes distribués
• Transparence à l’hétérogénéité. L’utilisateur n’a pas à se soucier des
différences matérielles ou logicielles des ressources qu’il utilise.
• Transparence aux pannes (réseaux, machines, logiciels). Les pannes
et réincarnations sont cachées à l’utilisateur. Transparence à la
réplication.
• Transparence à l’extension des ressources. Extension ou réduction du
système sans occasionner de gène pour l’utilisateur (sauf
performance).
Propriétés des systèmes distribués
• Transparence de mobilité
• Possibilité de déplacer des éléments/ressources
• Transparence de panne
• Doit supporter qu'un ou plusieurs éléments tombe en panne
• Transparence de performance
• Possibilité de reconfigurer le système pour en augmenter les performances
• Transparence d'échelle
• Doit supporter l'augmentation de la taille du système (nombre d'éléments, de
ressources ...)
• Le système doit préserver ses performances lorsque sa taille croît (nombre
d'éléments, nombre d’utilisateurs, étendue géographique)
Exemple
• Transparence à la localisation : liens hypertexte.
• Transparence d’accès : URL (site ∕= adresse IP).
• Désignation : URL, DNS Internet.
• Interopérabilité : Java bytecode et machine virtuelle, pages HTML, Web
service (J2EE, .Net)
Propriétés des systèmes distribués
Quelques difficultés
Propriété Difficulté engendrée
Asynchronisme du système de communication (pas
de borne supérieure stricte pour le temps de Difficulté de détecter les défaillances
transmission d’un message)
difficulté de définir un état global du
Dynamisme (la composition du système change en système
permanence)
Difficulté d’administrer le système
Grande taille (nombre de composants, d’utilisateurs, la capacité de croissance (scalability)
dispersion géographique) est une propriété importante, mais
difficile à réaliser
Propriétés comportementales
Elles sont diverses. Les plus fréquemment rencontrées sont :
• H1 : la transmission sur la voie se fait sans duplication de messages ;
• H2 : la transmission se fait sans altération des messages ;
• H3 : pour tout couple de processus, l’ordre de réception des messages est
identique à l’ordre d’émission (pas de séquencement) ;
• H4 : le délai d’acheminement des messages est fini : tout message envoyé
est reçu au bout d’un temps fini ;
• H5 : le délai d’acheminement est borné : si un message n’est pas reçu après
X secondes, il est perdu.
• Dans le cas où le protocole de communication garantit les hypothèses H1,
H2, H3 et H4, on dira que les canaux de communication sont FIFO.
• NB: tous les canaux peuvent être FIFO et pourtant l’ordre de réception des
messages sur les différents sites peut être indéterminé.
Fin