Systèmes Répartis - Institut Supérieur de l`Informatique du Kef

Transcription

Systèmes Répartis - Institut Supérieur de l`Informatique du Kef
Systèmes
Répartis
Mr. Mehrez Boulares, Mr. Nour Ben Yahia
2013-2014
2
Introduction aux systèmes répartis
•
•
•
Les ordinateurs ont subi des changements incroyables depuis leur mise en
opération vers 1945:
– plus en plus de puissance,
– coût de fabrication a constamment diminué permettant aux usagers de
disposer d'un objet peu dispendieux compte tenu de ce qu'il nous offre en
retour.
Les appareils subissent des changements constants et de plus en plus rapides
tant du point de vue logiciel que matériel. Depuis très peu de temps, nous
retrouvons sur le marché des systèmes multiprocesseurs, des systèmes
d'exploitation pour le traitement parallèle et des réseaux puissants
d'interconnexion. C'est là l'importance de prendre brièvement connaissance
avec le système d'exploitation de demain.
Nous sommes déjà entrés quelque peu dans l'informatique répartie qui elle
nous amènera vers l'informatique distribuée.
ISI Kef - 2013/2014
3
Introduction aux systèmes répartis
•
L'informatique répartie s'oppose à la fois à l'informatique centralisée, celle des
gros ordinateurs, et à l'informatique individuelle, celle des micro-ordinateurs.
Elle pallie certains désavantages de cette dernière par :
– Le partage des données grâce à un accès individuel, en lecture, par le
réseau à des fichiers communs situés sur un disque quelconque ainsi que
par le transfert de fichiers d'un disque à un autre.
– Le partage des applications. Pour l'exploitation individuelle, par le réseau,
d'un seul logiciel de base de données sur le disque d'une des machines
connectées.
– Le partage des ressources : chaque utilisateur connecté peut utiliser une
même imprimante.
– les communications : envoi par le réseau de courrier dans une boîte aux
lettres électronique à un ou plusieurs utilisateurs connectés. Accès par le
réseau téléphonique à des services d'informations : annuaires, banques de
données, etc.
ISI Kef - 2013/2014
4
Introduction aux systèmes répartis
ISI Kef - 2013/2014
5
Introduction aux systèmes répartis
ISI Kef - 2013/2014
Exemple de Système Réparti : Un
intranet
Source : Coulouris, Dollimore
and Kindberg Distributed
Systems: Concepts and Design
Edition 3, © Addison-Wesley
2001
ISI Kef - 2013/2014
6
7
Pourquoi une informatique répartie
•
•
•
•
•
•
•
•
Raisons budgétaires : économie de logiciels, de matériels
Raisons intrinsèques : adapter le système à l’application
– BDD réparties, Web, systèmes bancaires…
Besoin de partager
– des informations : fichiers, BDD, messages
– des ressources : unités de stockage, imprimantes, serveurs
– Des services
Accélérer le calcul
– Parallélisation de tâches
Alléger la charge : réduire les goulots d'étranglement
Augmenter la fiabilité : duplication de machines, de données ⇒ réalisation de
systèmes à haute disponibilité
Qualité de service : diminuer les coûts, les délais, augmenter la disponibilité
Réaliser des systèmes ouverts, évolutifs : adjonction facile de matériels et
logiciels.
ISI Kef - 2013/2014
8
Inconvénients
•
Très peu de logiciels existent sur le marché.
•
Le réseau peut très vite saturer.
•
La sécurisation des données sensibles est compliquée.
•
La mise en œuvre est difficile.
ISI Kef - 2013/2014
9
Définitions (1)
•
Un système à plusieurs processeurs n’est pas forcément un système réparti
•
Qu’est-ce qu’un système réparti, distribué, parallèle ?
•
Classification de flynn [1972]:
On différencie les systèmes sur la base du flux d’instructions et de données.
– SISD : PC monoprocesseur
– SIMD : machines vectorielles
– MISD : pipeline
– MIMD : machines multiprocesseurs faiblement et fortement couplées
(systèmes parallèles, systèmes distribués, systèmes d’exploitation
réseaux)
ISI Kef - 2013/2014
10
ISI Kef - 2013/2014
11
Classification de Flynn
L'acronyme PU, de l'anglais,
signifie processeur.
Le terme « Instruction Pool »
représente l'ensemble des
instructions disponibles pour le ou
les PU.
Le terme « Data Pool » représente
l'ensemble des données
nécessaires aux calculs.
ISI Kef - 2013/2014
12
Définitions (1)
•
MIMD à mémoire partagée
– Les processeurs ont accès à la mémoire comme un espace d'adressage
global. Tout changement dans une case mémoire est vu par les autres
CPU. La communication inter-CPU est effectuée via la mémoire globale.
•
MIMD à mémoire distribuée
– Chaque CPU a sa propre mémoire et son propre système d'exploitation. Ce
second cas de figure nécessite un middleware pour la synchronisation et la
communication. Un système MIMD hybride est l'architecture la plus utilisée
par les superordinateurs. Ces systèmes hybrides possèdent l'avantage
d'être très extensibles, performants et à faible coût.
ISI Kef - 2013/2014
13
Définitions (2)
•
Un système réparti est un ensemble de sites reliés par un réseau, comportant
chacun une ou plusieurs machines.
•
"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" Lamport
•
"Du point de vue utilisateur, un système réparti se comporte comme un système
traditionnel, mais s’exécute sur de multiples unités indépendantes" Tanenbaum
•
Un système d’exploitation réparti fournit et contrôle l’accès aux ressources du
système réparti.
•
Un système d’exploitation parallèle contrôle l’exécution de programmes sur une
machine parallèle (multiprocesseurs).
•
Un système d’exploitation de réseaux fournit une plateforme de machines
reliées par un réseau chacune exécutant son propre système d’exploitation.
ISI Kef - 2013/2014
14
Exemples de SRs
•
WWW, FTP, Mail.
•
Guichet de banque, agence de voyage.
•
Téléphones portables (et bornes).
•
Télévision interactive.
•
Agents intelligents.
•
Robots footballeurs.
ISI Kef - 2013/2014
15
Les différentes structures
Les structures centralisées
•
Tous les courriers sont stockés sur C (station centrale).
•
1 usager = 1 boîte aux lettres sur C.
•
Volume de stockage important sur C.
•
Disponibilité du service = disponibilité de C.
•
1 opération = 1 transfert d'informations.
 L'architecture centralisée consiste en un noyau central fort autour duquel tous les
périphériques sont regroupés (ou centralisées). Ce noyau central prend la plupart des
actions. L'avantage est une facilité d'administration.
ISI Kef - 2013/2014
16
Les différentes structures
Structure décentralisée-ou répartie
•
les architectures de réseau informatique se sont de plus en plus orientées vers une
distribution des ressources et de la puissance informatique.
•
Internet est sans doute l'exemple le plus marquant d'un réseau à architecture
distribuée puisqu'il ne possède aucun site central.
•
Dans la mise en œuvre de réseaux de moins grande ampleur, le degré de distribution
(ou de centralisation) de la puissance de calcul, des périphériques, des bases de
données
dépend
professionnelles.
ISI Kef - 2013/2014
de
différentes
considérations
stratégiques,
humaines
et
17
Les différentes structures
Structure parallèles (Systèmes de haute performance)
Les ordinateurs parallèles sont des machines qui comportent une architecture parallèle,
constituée de plusieurs processeurs identiques, ou non, qui concourent au traitement
d'une application. La performance d'une architecture parallèle est la combinaison des
performances de ses ressources et de leur agencement. (Latence, débit).
ISI Kef - 2013/2014
18
Les différentes structures
Structure parallèles (Systèmes de haute performance)
Architectures parallèles :
– Pas de limite de mémoire.
– Pas de limite de processeurs.
– Accélération des calculs complexes ou coûteux en temps d'occupation CPU
(calcul matriciel, simulation numérique, transformée de fourrier...).
– Calcul répétitif sur un large ensemble de données structuré.
– Traitement indépendant.
ISI Kef - 2013/2014
19
Les différentes structures
Structure parallèles (Systèmes de haute performance)
Le parallélisme est la conséquence :
– Besoin des applications.
– Calcul scientifique.
– Traitement d'images.
– Bases de données qui demandent des ressources en CPU et en temps de
calcul de plus en plus importantes.
– Limites des architectures séquentielles.
– Performance.
– Capacité d'accès à la mémoire.
– Tolérance aux pannes.
ISI Kef - 2013/2014
20
Comparaison entre différentes architectures
Comparaison des deux architectures de Systèmes de
haute performance et de Systèmes distribués
•
Un système parallèle de HP est une réponse à un besoin de HP :
– Une solution au problème.
– Un système distribué est une solution à un problème de distribution
géographique (historiquement).
– Mais … de nos jours, la distribution peut résoudre un problème de HP.
Donc, dans certains cas, un SD peut être considéré comme un système de
HP.
ISI Kef - 2013/2014
21
Comparaison entre différentes architectures
• Comparaison des deux architectures centralisée et
distribuée
– L'architecture centralisée supporte un noyau central alors que l'architecture
distribuée peut supporter plusieurs.
– Le coût de l'une ou l'autre architecture varie suivant le domaine. En règle
générale, si les périphériques ne sont pas utilisés à plein temps (par
exemple, une imprimante), l'architecture centralisée est plus économique
(car on économise en se basant sur le fait que tous les périphériques ne
seront jamais tous utilisés en même temps). Dans le cas contraire (carte
vidéo, réseau de PC), c'est l'architecture distribuée la plus économique (un
gros ordinateur coûte plus cher que 10 petits ordinateurs 10 fois moins
puissants).
ISI Kef - 2013/2014
22
Comparaison entre différentes architectures
Comparaison
distribuée
des
deux
architectures
centralisée
et
Du point de vu de l’architecture :
– Pas parallèle/Pas distribué : Machine séquentielle (un seul processeur).
– Parallèle/Pas Distribué : Machines vectorielles, Machines à mémoires
partagées, Machines SIMD.
– Pas Parallèle/Distribué : Réseau d’ordinateurs avec communication lente
exemple : Internet.
– Parallèle/Distribué : Réseau haut débit.
ISI Kef - 2013/2014
23
ISI Kef - 2013/2014
24
ISI Kef - 2013/2014
25
Systèmes parallèles
Systèmes répartis
Systèmes
d’exploitation de
réseaux
Processeurs
Sites
Ressources
Homogènes
Hétérogènes
Hétérogènes
Partage ou non de mémoire
Mémoires individuelles
Mémoires individuelles
Couplage fort
Couplage failbe
Couplage failbe
Topologie du réseau
d’interconnexion
Réseau LAN + WAN
Réseau LAN
Les users sont au courant de
la multiplicité des
Processeurs
Les users ont l’impression d’être dans un
système centralisé
Les users sont au courant de la
multiplicité des Machines
ISI Kef - 2013/2014
26
Identification des problèmes
•
Que doit résoudre un système réparti ?
– Tolérance aux pannes.
– Passage à l’échelle.
– Nommage et accès aux applications.
– Intégration de l’existant.
– Déploiement des applications.
– Sécurité et authentification.
– Disponibilité de l’application
ISI Kef - 2013/2014
27
Tolérance aux pannes
•
•
•
•
•
•
En anglais : reliability, fault tolerance.
Un serveur participant à l’application tombe en panne.
Un serveur envoie des informations erronées.
Un serveur n’est plus atteignable (mais pas en panne) puis le
redevient.
Atomicité dans les applications réparties.
ISI Kef - 2013/2014
Passage à l’échelle
•
•
•
•
•
•
En anglais : scalability.
Ce qui marche pour un utilisateur, marchera-t-il pour 10 000 ?
Ce qui marche pour un objet, marchera-t-il pour 1 000 000 ?
Ce qui marche pour un site, marchera-t-il pour 1000 ?
Exemple : les applications de gestion de commerce
électronique.
ISI Kef - 2013/2014
28
29
Nommage et accès aux applications
•
•
•
•
•
•
•
•
Nommage et accès aux applications
En anglais : naming.
Comment retrouver les objets distants ?
Un objet = un identifiant + un état + un comportement.
Applications non réparties : nommage géré par le langage
(référence) ou par l’OS (adressage).
Applications réparties : nommage explicite, dynamique ?
Exemple de nommage : DNS, URL, …
ISI Kef - 2013/2014
Intégration de l’existant
•
•
•
•
En anglais : legacy.
Connexion sur toutes les ressources d’une entreprise.
Interopérabilité des applications.
Transactions réparties.
ISI Kef - 2013/2014
30
31
Déploiement des applications
•
•
•
•
•
Comment installer tous les composants logiciels sur
différents clients et serveurs ?
Lorsque je change un nom de serveur ou j’en ajoute un, je
recompile ? je redéploie ? ou je peux configurer
automatiquement le redéploiement ?
ISI Kef - 2013/2014
32
Sécurité et authentification
•
•
•
•
Confidentialité.
Intégrité :
– Droits d’accès, Pare-Feu.
Authentification :
– Identification des applications partenaires.
– Non-répudiation.
– Messages authentifiés.
Combien de personnes utilisent l’application, qui sont-ils ?
– Nécessité de se protéger contre les intrusions.
– Nécessité de stocker les accès des clients dans des fichiers journaux.
ISI Kef - 2013/2014
Disponibilité d’une application
répartie
•
•
•
•
•
•
•
Exemple : un serveur qui fait de la tolérance aux pannes ne
peut plus assurer d’autres tâches.
Permettre des accès simultanés sur un même objet :
Sérialiser les objets.
Paralléliser les accès.
Appliquer différentes politiques.
Multi-threading.
ISI Kef - 2013/2014
33
34
Notions de Middleware
•
•
•
Middleware = Intergiciel = classe de logiciels systèmes agissant en qualité
d’infrastructure pour le développement ou le déploiement d’applications
reparties: exemple CORBA
Supporte des applications tournant sur des plateformes matérielles et
logicielles différentes.
Le middleware fournit :
– un support de haut niveau pour la distribution exemple invocation de
méthodes à distance.
– Des services de désignation, sécurité, transactionnels
ISI Kef - 2013/2014
35
•
•
•
Le Middleware conceptualise et réalise les fonctions suivantes :
– communications entre les applications réparties,
– échanges de données,
– facilités de mise en œuvre.
Il résout les problèmes d’intégration et d’interopérabilité :
– indépendance entre les applications et le système d’exploitation,
– portabilité des applications,
– partage des services distribués.
Services d’un Middleware :
– communication,
– localisation,
– transactions,
– sécurité,
– administration
ISI Kef - 2013/2014
36
Types de Middleware
•
•
•
•
•
Middleware de bases de données (ODBC)
Middleware à messages MOM Message OrientedMiddleware : IBM
MQSeries, Microsoft Message Queues.
Middleware à objets répartis (CORBA, JAVA RMI)
Middleware à composants (EJB, COM/DCOM, Web services)
Middleware à environnement : XML
ISI Kef - 2013/2014
Historique et état de l’art
•
•
•
•
1960
– Syst. temps partagé(unix), envir. Graphiques, réseaux
1970
– Ordinateurs personnels, Stations de travail
– Client/serveur, Réseaux locaux : Ethernet
– XeroxDFS
1980
– Systèmes ouverts,Tolérance aux fautes
– Premiers serveurs de fichiers
– Évolution du C/S : Appel de procédures àdistance
– DNS en 85,
– Amoebaen 84, Mach en 86, Chorus en 88
1990
– Internet, E-commerce
– AFS, NFS, LDAP
– DCE, corba, com/dcom
ISI Kef - 2013/2014
37
38
Le modèle Client-Serveur (1/2)
•
•
Coté serveur :
– Externalisation de services.
– Attente de requêtes en provenances de clients puis exécution des requêtes en
séquentiel ou en parallèle.
– Interface : Skeleton
• reçoit l’appel sous forme de « stream »
• décapsule les paramètres
• demande l’exécution
• renvoi les paramètres (par références) et les résultats
Coté client :
– Émission de requêtes puis attente de la réponse.
– Initiateur du dialogue.
– Interface : Stub
• Reçoit l’appel en local
• encapsule les paramètres
• attends les résultats du serveur
• décapsule les résultats
• redonne la main à la fonction appelante
ISI Kef - 2013/2014
39
Le modèle Client-Serveur (2/2)
•
•
•
•
Client/Serveur « traditionnel » :
– RPC
Client/Serveur « à objets » :
– RMI, CORBA, DCOM
Client/Serveur « de données » :
– Requêtes SQL
Client/Serveur « WEB » :
– CGI, Servlet, asp, jsp, php,...
ISI Kef - 2013/2014
40
Du centralisé vers le réparti
ISI Kef - 2013/2014
Gestion du temps dans
les SRs
Mehrez Boulares, Nour Ben Yahia
ISI KEF – 2013/2014
2
INTRODUCTION
•
Les systèmes répartis sont présents dans toutes les applications et sont,
par nature, très complexes. Le problème principal est qu’il n’y a plus d’état
global connu de toutes les parties mais seulement des états locaux
permettant de faire émerger un état global.
•
La propriété d’émergence est souvent mentionnée dans les systèmes à
agents ou systèmes multi agents : l’activité de chacun concourt à la
réalisation d’un objectif global.
•
Très naturellement, le contrôle de ces systèmes répartis n’est pas simple
mais il est important de pouvoir s’assurer de la réalisation d’un objectif
donné par un ensemble d’activités élémentaires.
ISI Kef
3
INTRODUCTION
•
•
•
•
Un système réparti est constitué de N composants (processus ou sites)
communiquant par messages (et uniquement de cette manière).
Chacun de ces composants agit comme un automate : il réalise des
opérations qui modifient son état.
Les opérations réalisées par un des composants sont naturellement
ordonnées par l'ordre dans lequel elles sont réalisées :
– s’il s'agit d'un processus abritant plusieurs activités (threads),
– sur un système monoprocesseur, c'est l'ordre de l'exécution des
instructions des instructions sur ce processeur qui ordonne les
événements.
La définition de l'ordre des événements sur un système multiprocesseurs
(fortement et a fortiori faiblement couplés) est plus problématique du fait de
la difficulté de maintenir une notion de temps absolu cohérente.
ISI Kef
4
INTRODUCTION
Dans un contexte de répartition:
• L’observation des programmes en exécution présente des difficultés qui rendent
le problème non trivial.
• Un programme réparti est constitué d’un ensemble de processus s’exécutant en
parallèle et communiquant seulement par envoi de messages sur des canaux
les interconnectant.
• Il n’y a pas d’horloge commune aux différents processus, et de plus, les temps
de transfert des messages ne sont pas bornés (dans un contexte de
communication fiable, ils sont toutefois finis).
• Dans ces conditions, il est impossible d’effectuer une observation “simultanée”
de l’état des différents processus et canaux.
• La réalisation d’une observation cohérente qui reflète un état global constitué
des états locaux des différentes parties du système, pris à des instants
physiques différents mais de manière à rendre une information utile sur l’état du
système dans son intégralité, constitue donc un problème désormais classique,
connu sous le nom de détection d’un état global réparti cohérent.
ISI Kef
5
PROBLEMATIQUE
•
Obtenir une vision instantanée d'un système réparti, consistant en la
collection des états des différents sites le composant (typiquement une
image mémoire de chacun des sites) est difficile à obtenir sans figer chacun
des systèmes.
•
L'absence de mémoire commune et le caractère aléatoire des délais
d'acheminement des messages échangés entre les sites rendent
impossible le calcul d'un état global du système dans un système réparti.
•
Typiquement, l'image qu'un site possédera de l'état des autres sites ne
pourra lui être communiquée qu'au travers de messages et ne pourra de ce
fait correspondre qu'à un état du passé de ces sites : la chronologie des
différentes images ainsi collectées n'est pas connue a priori.
ISI Kef
6
PROBLEMATIQUE
•
L'absence d'un état global accessible directement constitue
incontestablement une caractéristique de la répartition et est source de
difficultés dans le développement d'applications relatives à :
– l'interblocage ou verrou mortel (deadlock): situation dans laquelle un
ensemble de processus est en situation de blocage du fait de
l'existence d'un cycle dans le graphe d'allocations et de demandes des
ressources à ces processus ;
– le ramasse-miettes (garbage collecting), opération consistant en le
épération des ressources allouées à un objet inutilisé ;
– la mise au point (debugging): opération incluant par exemple la
consultation et/ou la modification des valeurs de variables dans
différents composants à un instant donné.
ISI Kef
7
PROBLEMATIQUE
•
Les Systèmes répartis ont une évolution asynchrone
– pas de mémoire commune (communication par messages)
– pas d’horloge commune
• Les horloges locales ne sont pas synchrones et dérivent
• L’état d’un site distant ne peut être connu que par des informations
véhiculées par les messages.
• De plus, les communications introduisent des délais
• L'ordre des messages n'est pas forcément préservé
Conséquences :
– Perception différente des mêmes événements depuis des sites distincts
– Chaque site a sa propre horloge, la notion d'état global n'existe pas
– On ne peut pas mettre en œuvre des algorithmes répartis basés sur le
temps.
ISI Kef
CONSTRUCTION D’UN ÉTAT GLOBAL
•
•
•
•
•
L'exécution d'un algorithme réparti est une succession d'événements,
chacun d'eux se produisant sur un site donné (Un événement : émission/
réception de message, calcul local au site)
Une horloge unique permet de donner une date à chacun des événements
et de les ordonner entre eux.
Sur chaque site, il est possible de définir un état local et de définir un ordre
entre les événements
Deux processus de deux sites différents peuvent avoir des informations
différentes sur l’état du système et sur l’ordre des événements qui s’y
produisent.
La solution de synchronisation des sites entre eux est donnée par la
construction d'un état global
• Utilisation d'horloges : logiques, vectorielles, matricielles
• Utilisation d’états locaux des sites et de messages en transit entre
eux
ISI Kef
8
9
LE MODÈLE DE CALCUL
•
Un système réparti est constitué d’un ensemble fini de processus qui ne
communiquent que par envoi de messages.
•
La structure d’un tel système peut être modélisée par un graphe orienté: les sommets
de ce graphe sont les processus et les arcs représentent les canaux de
communication unidirectionnels (canaux virtuels) reliant des processus entre eux.
•
A priori, aucune hypothèse particulière n’est faite quant à la topologie du graphe.
•
Les processus seront désignés par P1, P2,..., Pn et le canal allant de Pi vers Pj, s’il
existe, sera désigné par Ci j.
ISI Kef
10
LE MODÈLE DE CALCUL
•
Les processus ne partagent ni mémoire commune ni horloge globale, et
aucune hypothèse n’est faite quant à leur vitesse relative. L’envoi et la
réception de messages sont effectués de manière asynchrone, mais aucun
délai maximum de transfert des messages n’est supposé connu.
•
La seule hypothèse générale sur les communications concerne leur fiabilité:
les messages ne sont ni perdus (le délai de transfert est fini: tout message
émis est reçu) ni altérés ni dupliqués (tout message reçu a été émis). De
telles hypothèses caractérisent ce qu’il est convenu d’appeler un système
réparti asynchrone fiable
ISI Kef
11
ETAT GLOBAL
•
Chaque processus et chaque canal possède à tout moment un état local. L’état local
« eli » d’un processus « Pi » résulte de son état initial et de la séquence
d’événements dont ce processus a été le siège. L’état ECij d’un canal Cij est
l’ensemble des messages en transit sur ce canal, c’est à dire qui ont été émis par le
processus Pi et n’ont pas encore été reçus par le processus Pj.
•
L’évolution du système est régie par un ensemble d’événements. Chaque événement
met en jeu un processus et éventuellement un canal. Il y a trois sortes d’événements:
– les événements internes à un processus, qui ne modifient que l’état local du
processus,
– les émissions de messages, qui modifient l’état local du processus émetteur et
l’état du canal sortant sur lequel est émis le message
– et les réceptions de messages, qui modifient l’état local du processus récepteur
et l’état du canal entrant par lequel le message a été reçu.
ISI Kef
12
ETAT GLOBAL
•
Schématiquement on a, à ce niveau de description (m désigne un message):
– événement interne sur Pi: provoque la transition de eli à el'i , états avant et après
l’événement
– émission de m par Pi sur Ci j (cet événement est noté émissioni(m)):
provoque la transition de eli à el'i et l’affectation ECi j := ECi j U {m}
– réception de m par Pi sur Cj i (cet événement est noté réceptioni(m)):
provoque la transition de eli à el'i et l’affectation ECj i := ECj i \ {m} .
ISI Kef
13
ETAT GLOBAL
•
•
•
•
Chacun de ces événements est supposé atomique.
On dit qu’un événement e est capté dans l’état local eli d’un processus Pi
– si e appartient à la séquence d’événements ayant conduit Pi dans l’état eli.
Il est important de remarquer que l’état local d’un processus n’est immédiatement
observable que par un observateur local à ce processus (c’est à dire ayant accès en
lecture à la mémoire locale de ce processus), tandis que l’état local d’un canal C i j
n’est immédiatement observable ni par son origine Pi ni par son extrémité Pj (Pi resp. Pj- n’a pas connaissance immédiate des événements de réception -resp.
d’émission-); c’est notamment ce fait qui rend difficile le problème de l’observation
cohérente dans un système réparti.
L’état global S d’un système réparti est constitué de l’ensemble des états locaux des
processus et des canaux qui le constituent
ISI Kef
14
ETAT GLOBAL
Un état global cohérent correspond à un état global dans lequel le système peut se
trouver. Formellement, cela signifie:
i) ∀i : eli est un état local du processus Pi.
ii) Les conditions C1 et C2 qui suivant sont vérifiées:
C1: si l’événement émissioni(m) est capté dans eli, alors l’événement réceptionj(m) est soit capté dans elj, soit le message m appartient à ecij.
C2: si l’événement émissioni(m) n’est pas capté dans eli, l’événement réceptionj(m) n’est pas non plus capté dans elj.
ISI Kef
15
ETAT GLOBAL
•
Considérons l’exécution représentée par la figure 2, où trois processus Pi, Pj et Pk
captent respectivement leurs états locaux eli, elj et elk (le graphe de communication
est celui de la figure 1).
ISI Kef
16
ETAT GLOBAL
•
L’ensemble { eli, elj, elk} ne forme pas un état global.
•
Si l’on considère la paire (Pk, Pj), l’émission du message m3 est enregistrée dans
l’état local elk du processus Pk alors que sa réception ne l’est pas dans l’état local elj
du processus Pj.
– La condition C1 est mise en défaut, puisque l’état du canal ECkj n’est pas
considéré (un éventuel redémarrage de Pj et de Pk, suite à une reprise après
défaillance, à partir de cet état global entraînerait la perte du message m3).
•
D’autre part, même en considérant l’état des canaux dans l’état global, la cohérence
n’est pas assurée car la réception du message m4 est enregistrée dans elj sans que
son émission le soit dans ELk,
– ce qui met en défaut la condition C2 (les deux états locaux elj et elk et l’état du
canal ECjk ne sont pas mutuellement cohérents).
ISI Kef
17
NOTION DE PRÉCÉDENCE CAUSALE
•
•
•
Pour définir un état global il faut tout d’abord pouvoir ordonner les événements entre
eux, afin que :
– Si un des événements contient l’émission d’un message et que l’autre contient la
réception du même message, alors le premier a eu lieu avant le second.
– Si un site émet une demande d’allocation d’une ressource, il est considéré avant
un autre site qui aurait émis sa requête après le premier.
Cette relation d’ordre partiel sur les événements est appelée relation de causalité.
On définit la précédence comme suit :
– Un événement e précède un événement f si et seulement si :
– Ou bien e et f se déroulent sur le même site dans cet ordre
– Ou bien e contient l’émission d’un message m et f contient la réception du même
message m.
ISI Kef
18
NOTION DE PRÉCÉDENCE CAUSALE
•
•
•
Un événement E1 sur un site 1 précède un autre événement E2 sur un site 2 si E1 a
été généré avant E2 :
– Il y’a une précédence causale entre E1 et E2.
– Il existe une chaine d’événement qui démarre à E1 et finit par E2 et qui consiste
par un enchainement émission, exécution et réception.
La précédence causale est concrétisée par le mécanisme d’horloge logique, une
notion logique permettant de comparer logiquement les événements de point de vu
leur ordre d’exécution quelque soit le site.
Afin de dater les événements des horloges logiques de différents types peuvent être
utilisées : Scalaire, Vectorielle, Matricielle.
ISI Kef
19
NOTION DE PRÉCÉDENCE CAUSALE
ISI Kef
NOTION DE PRÉCÉDENCE
CAUSALE
•
•
•
•
•
20
Cette relation définit un ordre partiel des événements. Des événements e et e' non
comparables sont dits concurrents, ce qu'on note e||e'.
A un événement e on peut alors associer trois ensembles d'événements :
Passé(e) : ensemble des événements antérieurs à e dans l'ordre causal (e appartient
à cet ensemble) ;
Futur(e): ensemble des événements postérieurs à e dans l'ordre causal (e appartient
à cet ensemble) ;
Concurrent(e) : ensemble des événements concurrents avec e.
ISI Kef
21
NOTION DE PRÉCÉDENCE CAUSALE
•
La précédence causale est concrétisée par le mécanisme des horloges logiques, une
notion de temps logique permettant de comparer logiquement des événements du
point de vue de leur ordre d'exécution quel que soit le site.
•
Afin de dater les événements, des horloges logiques de différents types peuvent être
définies afin de rendre compte de la relation de causalité entre les événements.
Les valeurs des horloges associées à des événements (leurs estampilles logiques)
comparables doivent être elles-mêmes comparables et refléter l'ordre des
événements
ISI Kef
22
HORLOGE LOGIQUE
•
Lamport a proposé de définir pour ce type de systèmes une notion de
temps logique permettant de comparer logiquement des événements du
point de vue de leur ordre d'exécution : d'une part, sur un site, les
événements locaux peuvent être ordonnés en se basant sur l'ordre de leur
exécution (ou le temps absolu s'il est défini) et d'autre part l'émission d'un
message sur le site émetteur précède toujours sa réception sur le site
récepteur. Cela correspond à la notion de précédence causale.
ISI Kef
23
HORLOGE LOGIQUE
•
Selon Leslie Lamport l'horloge logique permet de comparer logiquement des
événements (requêtes, messages…) du point de vue de leur ordre d'exécution
(Horloges scalaires)
– Chaque site gère une horloge de type compteur dont la valeur est un entier
(initialisé à 0 au lancement du système).
– La valeur de l'horloge logique d'un site est incrémentée chaque fois qu'un
événement local s'y produit : opération locale, ou envoi/réception d'un message.
– Dans le cas d'un envoi, la valeur courante (après incrémentation) de l'horloge de
l'émetteur est embarquée avec le message et sert à l'estampiller (La réception
d'un message permet de synchroniser l'horloge du récepteur avec celle de
l'émetteur du message qui est transportée par le message. Le principe est
simple : il consiste à attribuer à l'horloge du récepteur une valeur supérieure à la
fois à la valeur courante de l'horloge du site et à celle de l'estampille du message
reçu.)
– La réception d'un message permet de synchroniser l'horloge du récepteur avec
celle de l'émetteur du message qui est transportée par le message.
ISI Kef
24
HORLOGE LOGIQUE SCALAIRE
•
•
Principe : attribuer à l'horloge du récepteur une valeur supérieure à la fois à a valeur
courante de l'horloge du site et à celle de l'estampille du message reçu.
Conséquence : Garantit que la réception sera postérieure à l'émission.
ISI Kef
25
HORLOGE LOGIQUE SCALAIRE
ISI Kef
26
HORLOGE LOGIQUE SCALAIRE
ISI Kef
27
HORLOGE LOGIQUE SCALAIRE
•
•
Cette technique permet donc d'associer à chaque événement une date (estampille
logique) correspondant à la valeur de l'horloge de son site modifiée selon les règles
que nous venons de définir. On peut observer que :
l'ordre des événements qui est ainsi défini n'est pas un ordre strict : plusieurs
événements peuvent porter la même valeur. C'est le cas (parmi d'autres) sur notre
exemple des événements e, o et x appartenant respectivement à P, Q et R qui ont
chacun 6 comme date. Il est facile de rendre cet ordre strict en modifiant légèrement
le système de datation : la date d'un événement sur un site est obtenue en adjoignant
à la valeur de l'horloge scalaire de ce site l'identification du site (par exemple un
entier attribué artificiellement ou une adresse IP ou physique).
ISI Kef
28
HORLOGE LOGIQUE SCALAIRE
La règle de comparaison des dates est alors :
ISI Kef
29
HORLOGE LOGIQUE SCALAIRE
•
De nombreux algorithmes répartis :
– Algorithmes utilisant une “file d’attente virtuelle” répartie (Exclusion mutuelle
répartie, mise à jour de copies multiples, diffusion cohérente (ordre de réception
uniforme))
– Détermination de l’accès “le plus récent” (gestion cohérente de caches multiples,
mémoire virtuelle répartie)
– Synchronisation des horloges physiques (borne supérieure sur la dérive entre
sites)
– Algorithmes de détection de terminaison, d'élection, de diffusion de messages,
ISI Kef
30
HORLOGE LOGIQUE VECTORIELLE
•
•
Nous venons de voir que le système de datation par estampilles scalaires d'une part
introduisait un ordre artificiel sur des événements concurrents et d'autre part ne
permettait pas de corriger les défaillances vis-à-vis de la relation FIFO des canaux de
communication. Le mécanisme de datation par estampilles vectorielles (et les
horloges vectorielles maintenues par les différents composants d'un système) permet
de pallier ces deux inconvénients.
Chaque site gère une horloge vectorielle constituée de n entiers (n est le nombre de
composants du système). Une telle horloge permet de dater les événements d'un site
et est mise à jour lors de l'occurrence des événements. Comme pour les horloges
scalaires, les messages envoyés par un site sont estampillés en utilisant la valeur
courante de l'horloge vectorielle du site émetteur et la réception d'un message pemet
au site récepteur de synchroniser son horloge vectorielle avec celle du site émetteur
du message.
De manière plus précise, les règles suivantes sont appliquées pour la gestion des
horloges vectorielles:
ISI Kef
31
HORLOGE LOGIQUE VECTORIELLE
ISI Kef
32
HORLOGE LOGIQUE VECTORIELLE
ISI Kef
33
HORLOGE LOGIQUE VECTORIELLE
•
La propriété fondamentale que possèdent les estampilles vectorielles déduites des
horloges vectorielles et de leur actualisation par les règles énoncées est que
•
Par exemple l'estampille vectorielle de l'événement p est [4, 7, 5]. Cela correspond
au fait que Passé(p) contient
– 4 événements sur P (a, b, c, d);
– 7 événements sur Q (j, k, l, m, n, o, p);
– 5 événements sur R (u, v, w, x, z).
ISI Kef
34
HORLOGE LOGIQUE VECTORIELLE
•
La relation d'ordre suivante peut par ailleurs être définie sur les estampilles
vectorielles :
•
Par exemple [4,7,5] est plus petite que [6,7,8], plus grande que [4,6,4] et
incomparable avec [6,5,7]
ISI Kef
35
HORLOGE LOGIQUE VECTORIELLE
•
Muni de cette relation d'ordre, le système de datation par estampilles vectorielles a la
remarquable propriété de refléter exactement la relation de précédence causale entre
événements :
ISI Kef
36
HORLOGE LOGIQUE VECTORIELLE
•
•
•
•
On peut vérifier sur notre exemple que :
les estampilles vectorielles des événements précédant causalement p sont
inférieures (au sens qui a été défini) à l'estampille vectorielle de p ([4,7,5]).
Par exemple l'estampille vectorielle de l'événement d antérieur à p est ([4,1,0]) qui
est inférieure à ([4,7,5]);
les estampilles vectorielles des événements suivant causalement p sont supérieures
à l'estampille vectorielle de p.
Par exemple l'estampille vectorielle de l'événement C postérieur à p est ([8,9,9]) qui
est supérieure à ([4,7,5]);
les estampilles vectorielles des événements concurrents de p sont incomparables
avec l'estampille vectorielle de p;
Par exemple l'estampille vectorielle de l'événement e concurrent avec
l'événement p est ([5,3,3]) qui est incomparable avec ([4,7,5]).
ISI Kef
37
Correction TD
ISI Kef
38
Correction TD
•
Considérons l'événement p.
Il appartient à son propre passé et est précédé directement par o et y.
- On a Passé(p) = {p} + Passé(o) + Passé(y)
Le calcul de Passé(p) suppose donc le calcul de celui de o et y.
- On a Passé(o) = {o} + Passé(n) + Passé(d)
En pousuivant le calcul:
- Passé(n) = {n} + Passé(m)
- Passé(m) = {m} + Passé(l) + Passé(a)
- Passé(l) = {l} + Passé(k)
- Passé(k) = {k} + Passé(j) + Passé(u)
- Passé(j) = {j}
- Passé(u) = {u}
- Passé(a) = {a}
- Passé(d) = {d} + Passé(c)
- Passé(c) = {c} + Passé(b)
- Passé(b) = {b} + Passé(a) + Passé(j)
- Passé(y) = {y} + Passé(x)
- Passé(x) = {x} + Passé(w) + Passé(n)
- Passé(w) = {w} + Passé(v)
- Passé(v) = {v} + Passé(u) + Passé(l)
Par conséquent Passé(p) = {a, b, c, d, j, k, l, m, n, o, p, u, v, w, x, y}
ISI Kef
39
Correction TD
•
•
•
Par un calcul analogue, on obtient:
Futur(p) = {g, h, i, p, q, r, s, t, C, D}
Finalement les événements n'appartenant ni à Passé(p), ni à Futur(p) sont
concurrents avec p.
On a donc Concurrent(p) = {e, f, z, A, B}
ISI Kef
40
Correction TD
ISI Kef
41
Correction TD
ISI Kef
42
Correction TD
ISI Kef
Accès concurrent
dans les SR
Mehrez Boulares, Nour Ben Yahia
ISI Kef
2
Les accès concurrents : rappels
•
•
•
Un problème d'accès concurrent a lieu quand deux processus partagent une
ressource logicielle ou matérielle: on parle de section critique au niveau du
programme.
Exemples:
– section de ligne ferroviaire à voie unique. Trains dans un sens ou dans l'autre,
mais pas dans les deux sens en même temps.
– Lecteurs/rédacteurs, producteurs/consommateurs
On rentre en section critique, par une section d'entrée qui met en œuvre une
condition et on la quitte par une section de sortie.
– Section d'entrée
• Section critique : inst1, inst2, inst3…
– Section de sortie
ISI Kef
3
Les accès concurrents : rappels
•
•
•
Rappelons tout d'abord en quoi consiste ce problème. Des applications s'exécutant
de manière concurrente et partageant des ressources peuvent, dans certaines
circonstances, avoir besoin d'accéder de manière exclusive à une ou plusieurs de
ces ressources appelées ressources critiques.
Le code exécuté nécessitant cet accès exclusif est lui-même appelé une section
critique. On fait couramment le parallèle avec une voie de chemin de fer ou un pont
étroit supportant une charge limitée susceptibles d'être empruntés par des véhicules
dans les deux sens. Le bon fonctionnement (et la survie des usagers) suppose que
seul un véhicule ne puisse utiliser, à un instant donné, la section de rail ou de route
correspondante.
D'un point de vue informatique, ce problème est fréquent. Citons-en quelques
exemples :
– suite d'opérations dans un fichier ou une base de données ;
– accès à une ressource telle qu'une imprimante ;
– accès à une zone de mémoire centrale ; (segment de mémoire partagée) par
plusieurs processus
ISI Kef
4
Les états d'un processus
• 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
ISI Kef
Propriétés d'un algorithme d'exclusion
mutuelle
•
Une solution n'est considérée correcte que si elle respecte les propriétés
suivantes
– 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
•
Un algorithme qui assure ces deux propriétés assure également l'absence
de deux problèmes, l'interblocage et la famine:
– Interblocage (Deadlock) : est une situation du système où il y a
plusieurs sites à l'état Demandeur et aucun ne peut accéder à la SC.
– Famine (Starvation) : aura lieu si un site qui se trouve à l'état
Demandeur ne passe jamais à l'état Dedans.
ISI Kef
5
6
Solutions
•
On parle d'exclusion mutuelle quand un seul processus à la fois a le droit de
rentrer en section critique.
– Solutions logicielles : Sémaphores, Moniteurs.
– Solutions matérielles : Désactiver les interruptions.
ISI Kef
7
Solutions matérielles
•
La solution la plus simple, mais qui ne peut s'appliquer que dans le cas de machines
monoprocesseurs, consiste à masquer les interruptions susceptibles de provoquer
une concurrence relativement à une ressource critique. Dans le mode superviseur
des processeurs, il est possible de manipuler le masque d'interruption du processeur,
ce qui est largement utilisé lors du développement des systèmes d'exploitation.
ISI Kef
8
Solutions logicielles
•
•
Nous nous intéressons ici à la possibilité de résoudre le problème de l'exclusion
mutuelle sans faire appel à des instructions spécifiques et donc en se basant sur les
seules opérations d'affectation et de test. Ainsi qu'on va le voir au travers de solutions
erronées, cela n'est pas immédiat et nécessite certaines précautions.
La première idée qui vient à l'esprit consiste à utiliser une variable booléenne ayant la
valeur VRAI lorsqu'un processus est en section critique.
ISI Kef
9
Les accès concurrents : les sémaphores
•
•
•
•
•
Sémaphores binaires qui peuvent prendre la valeur 0 ou 1 et les sémaphores n-aires.
Le système gère l'entrée à la section en endormant les processus qui arrivent alors
que le sémaphore est attribué,
Les primitives P et V sont indivisibles
P(S) permet de prendre le sémaphore :
– Si S > 0
• Alors s = s -1
• Sinon s'endormir
– Finsi.
V(S) permet de libérer le sémaphore et un processus bloqué s'il y en a
– Si un processus est bloqué sur S
• Alors le libérer
• Sinon s =s+1
– Finsi.
ISI Kef
Les accès concurrents dans un environnement
réparti
•
•
Un processus bloqué appartient à la file des processus en attente, une fois libéré il
passe dans celle des prêts
– Le système gère des contextes de processus.
Peut-on gérer des contextes à distance ? NON
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
ISI Kef
10
11
Définitions
•
Une commutation de contexte (context switch) en informatique consiste à
sauvegarder l'état d'un processus ou d'un processus léger et à restaurer l'état d'un
autre processus (léger) de façon à ce que des processus multiples puissent partager
les ressources d'un seul processeur dans le cadre d'un système d'exploitation
multitâche.
•
Le contexte d'un processus est l'ensemble des informations dynamiques qui
représente l'état d'exécution d'un processus (e.g. où est-ce que le processus en est
de son exécution).
ISI Kef
12
Exemple
•
La commutation de contexte invoque au moins trois étapes. Par exemple, en
présumant que l'on veut commuter l'utilisation du processeur par le processus P1
vers le processus P2 :
– Sauvegarder le contexte du processus P1 quelque part en mémoire (usuellement
sur la pile de P1).
– Retrouver le contexte de P2 en mémoire (usuellement sur la pile de P2).
– Restaurer le contexte de P2 dans le processeur, la dernière étape de la
restauration consistant à reprendre l'exécution de P2 à son point de dernière
exécution.
ISI Kef
13
Solution du coordinateur
•
•
•
Principe général
– 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
ISI Kef
14
Solution du coordinateur
•
•
•
Un coordinateur gère l'accès à la ressource
Tout processus remplace P(S) par une requête bloquante au coordinateur Puis-je ?
V(S) est remplacé par une primitive qui envoie un message de terminaison au
coordinateur
Avantages
• Très simple à mettre en œuvre
• Simple pour gérer la concurrence d'accès à la ressource
Inconvénients :
• Sollicitation excessive du coordinateur
• Panne du coordinateur, il faut élire un nouveau coordinateur
• Tous doivent se mettre d'accord pour n'en élire qu'un seul, mais il faut en élire un au
bout d'un temps fini
ISI Kef
15
Solution du coordinateur
•
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
ISI Kef
16
Algorithme à base de jeton
•
•
•
Anneau logique (indépendant de la structure du réseau physique) : chaque site a un
successeur
Jeton circulant :
– un site non demandeur transmet le jeton à son successeur
– un site demandeur attend le jeton pour obtenir l'exclusion mutuelle
– un site qui sort d'exclusion mutuelle transmet le jeton à successeur
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é : unicité du jeton
– Vivacité : l'algorithme doit assurer que le jeton circule bien entre tous les
processus voulant accéder à la ressource
ISI Kef
17
Algorithmes
•
•
Algorithme de [Le Lann, 77]
Algorithme de [ Ricart & Agrawala, 83 ]
ISI Kef
Les accès concurrents : solutions réparties (en
théorie)
•
•
•
•
•
Chaque processus connaît les N autres processus conflictuels.
Chaque processus désirant rentrer en section critique :
– Envoie un message aux N processus : puis_je ?
– Attend N réponses
– Réception N réponses: début de la section critique
– Réception N-1 réponses :
• un processus est probablement en section critique
• La réponse du processus s'est perdue
Aucun respect de l'ordre des demandes
Risque de famine
SOLUTION : estampiller les messages
 Algorithmes à base de permission (Un processus candidat doit demander a
d'autres processus la permission d'entrer en exclusion )
ISI Kef
18
19
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
ISI Kef
Les accès concurrents: l'algorithme de
Lamport
•
•
Proposé en 1978, vise à satisfaire les demandes des différents sites dans où elles
sont formulées
Cet algorithme suppose que les canaux de communication entre les différents sites
respectent la propriété FIFO. Chacun des composants du système utilise une
horloge scalaire qu'il synchronise lors de la réception de messages en provenance
des autres composants du système. Trois types de messages (estampillés lors de
leur envoi) sont utilisés et chacun des messages sera systématiquement envoyé à
tous les autres participants :
– REQUETE : un tel message est envoyé lorsqu'un site veut entrer en section
critique;
– REPONSE : un tel message est envoyé par un site qui reçoit un message du
type précédent ;
– LIBERATION : un tel message est envoyé par un site lorsqu'il sort de section
critique.
ISI Kef
20
Les accès concurrents: l'algorithme de
Lamport
•
Chaque site gère une file d'attente dans laquelle il place, dans l'ordre induit par la
valeur de leurs estampilles, toutes les requêtes pour entrer en section critique (y
compris les siennes) et leurs estampilles. En fait, la file des requêtes sera répliquée
sur chaque site, si bien que chaque site peut décider de la possibilité d'entrer en
section critique sur la base des informations qu'il possède.
ISI Kef
21
22
l'algorithme de Lamport
ISI Kef
23
l'algorithme de Lamport
•
•
•
•
Elle repose sur les observations suivantes :
la propriété FIFO de chacun des canaux de communication et la synchronisation des
horloges, implique que si un site a reçu un message d'accord (de type REPONSE) en
provenance du site j
– toute requête antérieure de ce même site lui est nécessairement arrivée;
– toute demande lui arrivant en provenance de ce site sera postérieure à la sienne,
s'il en a formulé une.
Si un site a reçu l'accord de tous les sites et que sa demande est la plus ancienne,
aucune demande antérieure ne lui parviendra d'un autre site;
l'existence d'un ordre total sur les demandes implique que seul un site pourra rentrer
en section critique, les autres devant nécessairement attendre que la demande en
tête de file soit retirée de la file (donc que le site élu sorte de section critique et
envoie un message de type LIBERATION).
ISI Kef
24
l'algorithme de Lamport
Nombre de messages échangés
• Le traitement complet (entrée et sortie) d'une phase de section critique requiert, pour
un système de N composants, 3*(N-1) messages (N-1 messages de chacun des
types).
ISI Kef
25
Exemple
•
•
Dans cet exemple impliquant trois sites, les sites S1 et S2 veulent entrer en section
critique alors que leurs horloges scalaires ont respectivement 3 et 2 comme valeur.
Les messages envoyés par S1 à S2 et S3 sont donc estampillés 3.1. Les messages
envoyés par S2 à S1 et S3 sont quant à eux estampillés 2.2.
Dans la figure ci-dessous :
– les envois de messages de type REQUETE correspondent aux flèches bleues;
– les envois de messages de type REPONSE correspondent aux flèches vertes;
– les envois de messages de type LIBERATION correspondent aux flèches
rouges.
ISI Kef
26
l'algorithme de Lamport
ISI Kef
27
l'algorithme de Lamport
ISI Kef
28
l'algorithme de Lamport
ISI Kef
29
l'algorithme de Lamport
ISI Kef
30
l'algorithme de Lamport
ISI Kef
31
l'algorithme de Lamport
ISI Kef
32
l'algorithme de Lamport
ISI Kef
33
l'algorithme de Lamport
ISI Kef
34
l'algorithme de Lamport
ISI Kef
35
l'algorithme de Lamport
ISI Kef
36
l'algorithme de Lamport
ISI Kef
37
Algorithmes
•
•
•
Algorithme de [Ricart & Agrawala, 81]
[Carvalho & Roucairol, 83]
[Chandy & Misra, 84]
ISI Kef
Inter blocage dans
les SRs
Mehrez Boulares, Nour Ben Yahia
ISI Kef
2
Inter blocage: introduction
•
Solution accès concurrents  ne veut pas dire absence d’inter blocage.
•
Inter blocage : situation pour un ensemble de processus(ou transactions) où chacun
d’entre eux est dans l’attente de la réalisation d’un événement de la part d’un autre.
•
Mauvaise programmation  risque d’inter blocage :
– Sections critiques emboitées on doit interdire des appels récursifs d’une section
critique (appels récursifs à l’intérieure d’une SC).
•
Besoin de plusieurs ressources : inter-blocages
ISI Kef
3
Inter blocage: introduction
•
Un ensemble de processus sont en interblocage si chaque processus dans cet
ensemble est bloqué en attente d’un événement qui seulement un autre processus
de cet même ensemble peut déclencher.
•
L’événement attendu peut être la libération d’une ressource ou l’envoie d’un
message….
•
En cas d’interblocage aucun processus ne peut …
– Ni continuer son exécution
– Ni libérer une ressource
– Ni être réveillé
ISI Kef
4
Inter blocage : introduction
•
L’inter-blocage demande la présence simultanée de 4 conditions (conditions
nécessaires)
1. Exclusion mutuelle: A un instant précis, une ressource est allouée à un seul
processus.
2. Saisie et attente (hold and wait): un processus détient une ressource non
partageable et en attend des autres pour compléter sa tâche.
3. Pas de préemption : un processus qui détient une ressource non partageable la
garde jusqu’à ce qu’il aura complété sa tâche.
4. Attente circulaire: il y a un cycle de processus tel que chaque processus pour
compléter doit utiliser une ressource non partageable qui est utilisée par le suivant, et
que le suivant gardera jusqu`à sa terminaison.
ISI Kef
5
Inter blocage : introduction
Exemple :
•
•
•
•
Exclusion mutuelle: Seulement une voiture occupe un endroit particulier de la route
à un instant donné.
Saisie et attente : Aucune voiture ne peut faire marche arrière.
Pas de préemption: On ne permet pas à une voiture de pousser une autre voiture
en dehors de la route.
Attente circulaire: Chaque coin de la rue contient des voitures dont le mouvement
dépend des voitures qui bloquent la prochaine intersection.
ISI Kef
6
Modélisation des inters blocages
Processus
Pi demande un exemplaire de Ri, bloqué en attente de la ressource
ISI Kef
Ressource possédant 4 exemplaires (instances)
Pj détient un exemplaire de Rj ou Rj est affecté à Pj
7
Modélisation des inters blocages
ISI Kef
8
Modélisation des inters blocages
ISI Kef
9
Explication des graphes
- Dans G2 de fait que P1 n’utilise plus qu’une seule ressource la condition 3 n’est pas
vérifiée, ainsi que dès que P1 libère la ressource, P3 peut y accéder en mettant fin ainsi à
un éventuel inter blocage.
* Existence de 2 cycles :
ISI Kef
10
Explication des graphes
• Tous les cycles ne sont pas bloquants :
• Tout graphe d’allocation de ressource avec une seule occurrence
des ressources peut être converti en graphe d’attente WFG
(Wait For Graph).
ISI Kef
11
Explication des graphes
• Simplification possible lorsqu’un processus demande une ressource
spécifique identifiée :
• Sommet ≡ processus ;
• Arc étiqueté par la ressource demandée.
ISI Kef
12
Inter blocage : Solutions
• Ignorer le problème (L’algorithme de l’autruche)
• D’évitement : le système alloue une ressource si elle n’entraînera pas d’interblocage (disposer à l’avance d’informations sur l’utilisation des ressources par un
processus, et décider dynamiquement de l’allocation)
• Préventives : le système empêche les inters blocages d’avoir lieu (s’assurer que
l’une des conditions nécessaires n’est jamais remplie)
• Détection et guérison : le système ne fait aucun effort à priori. Une fois qu’un
inter blocage est détecté, il le corrige (requiert un algorithme de détection et un
algorithme de correction. Surcharge de travail pour le système.)
 Les algorithmes différents selon le nombre d’instances des ressources.
ISI Kef
13
Inter blocage : Solutions
ISI Kef
-
Problématique différente :

Détection difficile.

Respect de l’ordre d’accès aux ressources, difficile.
14
Solution basée sur la prévention
A- Allocation par classe de ressource :
• Consiste à classer les ressources et à les demander dans un certain ordre.
• Soit un processus qui détient Ri, et qui demande Rj il ne sera autorisé à
demander Rj que si classe(Ri) < classe(Rj) autrement il libère Ri.
• Inconvénient : ne s’applique pas aux ressources logiciels et nécessite la
K de l’ordre d’accès au ressources.
B- Allocation par estampilles :
• Chaque processus acquiert au démarrage une estampille.
• Il s’agit de respecter une allocation basée sur un ordre croissant des
estampilles.
• 2 versions: Wait/Die, Wound/Wait RosenKrantz(1978).
ISI Kef
15
Solution basée sur la prévention
- Les algorithmes Attente/Mort (Wait/Die) et Blessé/Attente (Wound/Wait) sont deux
autres méthodes d'évitement qui utilisent une technique de rupture de la symétrie.
Dans ces deux algorithmes on prend en compte l'âge des processus et l'on
distingue un processus âgé (A) et un processus jeune (J).
- L'âge d'un processus peut être déterminé par horodatage (timestamp) lors de sa
création. Les dates les plus petites appartiennent à des processus plus âgés, les
plus grandes à des processus plus jeunes.
ISI Kef
16
Solution basée sur la prévention
• Il est important de se rendre compte qu'un processus peut être dans un état
non-sûr sans pour autant forcément conduire à un inter blocage.
• La notion de sûr/non-sûr fait uniquement référence à la possibilité que le
système entre dans un inter blocage ou non.
• Par exemple, si un processus fait une requête sur une ressource A qui résulte
en un état non-sûr, mais relâche une ressource B pour éviter une attente
circulaire, alors l'état est non-sûr mais le système n'est pas en inter blocage.
ISI Kef
17
Wait / Die
• Un processus n’est autorisé à attendre que s’il est plus vieux (estampille plus
petite).
• Pi détient la ressource, Pj demande la ressource.
• Si E(Pi) > E(Pj) {demande Pj est plus ancienne}.
• Pj est autorisé à attendre.
• Sinon {demande Pi est plus ancienne}.
• Pj est tué.
-
Les vieux attendent, les jeunes meurent.
 Risque de famine pour les jeunes.
ISI Kef
18
Wound/Wait (Préemption ou attente)
• Un processus n’est autorisé à attendre que s’il est plus jeune (estampille plus
grande).
• Pi détient la ressource, Pj demande la ressource.
• Si E(Pi)>E(Pj) {demande Pj est plus ancienne}.
• Pi libère la ressource par préemption et meurt le jeune processus redémarre
(garde son estampille) et attend la fin des vieux processus : pas de famine.
• Sinon {demande Pi est plus ancienne}.
• Pj est autorisé à attendre.
-
Les vieux réquisitionnent, les jeunes attendent.
ISI Kef
19
Wound/Wait (Préemption ou attente)
ISI Kef
20
Algorithme du Banquier

Il vérifie que le fait d’accorder une requête conduit à un état sur

Le cas échéant la ressource est allouée, sinon elle est mise en attente

Afin de voir si un état est sûr, il faut nécessairement vérifier si les ressources sont
suffisantes.

Les demandes futures doivent être déclarées.

A chaque demande de ressource, on vérifie que cette demande ne puisse mener à un
inter-blocage.
ISI Kef
21
Algorithme du Banquier

Si une demande devait mener à un inter-blocage, le processus est suspendu; il sera
réactivé une fois que ce risque n'existe plus.

L'algorithme est activé à chaque demande.

Les processus suspendus peuvent être réordonnancés.

Les processus sont éventuellement ordonnancés de manière à ce que tous puissent
s'exécuter et se terminer.

Ordonnanceur à long terme !
ISI Kef
22
Détection des inters blocages

L’inter blocage est détecté à partir du WFG.

Décision qui nécessite l’examen des WFG de tous les sites.
a- Solution centralisée : Un site maintient un graphe global.
b- Solution distribué : Chaque site maintient une partie du graphe. Le graphe global est
la réunion des WFG.
c- Solution hiérarchique : Chaque site maintient le graphe de ses descendants.
d- Solution partiellement centralisée :
• Un site central maintient un WFG global.
• Chaque site maintient sont WFG local et informe le site central.
• Inter blocages fantômes : état global est-il réel ?
ISI Kef
23
Détection des inters blocages
d- Solution partiellement centralisée :
• Envoi d’informations à l’initiative du coordinateur ou des sites :
• Fréquence périodique, à chaque déroulement de l’algorithme, à chaque
demande d’allocation/libération de ressource : compromis.
e- Solution complètement centralisée :
• Chaque requête pour une ressource est transmise au site central.
• Pas de WFG locaux.
• Point de congestion, pas de tolérances aux pannes.
ISI Kef
24
Guérison
•
La guérison de l’interblocage passe par la destruction d’au moins un des processus
interbloqués, ce qui entraîne la libération des ressources qui lui étaient allouées, de
façon à supprimer la présence du cycle. L’exécution de ce processus devra en
général être reprise ultérieurement.
•
Il y a difficulté si un processus détruit a effectué des modifications irréversibles,
éventuellement incohérentes, de données globales. Il faut donc dans ce cas
enregistrer une copie des données globales susceptibles d’être modifiées par un
processus avant le lancement de ce processus ; au moment de la destruction, on
rétablit les valeurs initiales des données.
ISI Kef
Tolérance aux pannes
dans les SRs
Mehrez Boulares, Nour Ben Yahia
ISI KEF 2013-2014
2
Introduction
•
•
•
Nombre croissant de composants dans un système => Probabilité plus
grande que des composants tombent en panne pendant l’exécution de
l’algorithme
Causes diverses
– Erreurs de conception, Accidents, Malveillances etc.
Objectif: éviter de relancer un algorithme après chaque panne => concevoir
des algorithmes capables de fonctionner malgré des pannes.
ISI Kef
3
Introduction
•
•
•
Système Distribué: panne  système est affecté partiellement et
improbable qu’il le soit en totalité
Idée de solution: les sites corrects prennent en charge les tâches des sites
défaillants
Conséquence: perte de performances mais pas de fonctionnement erroné
ISI Kef
4
Introduction
•
•
•
La tolérance aux fautes s’inscrit dans le contexte plus large de la sûreté de
fonctionnement.
La sûreté de fonctionnement (dependability) d’un système informatique est
la propriété qui permet à ses utilisateurs de placer une confiance dans le
service qu’il délivre.
Le service délivré par un système est son comportement tel qu’il est perçu
par ses utilisateurs
ISI Kef
5
La sûreté de fonctionnement
La sûreté de fonctionnement
Attributs
Disponibilité (Availability)
Fiabilité (Reliability)
Sûreté (Safety)
Confidentialité (Confidentiality)
Intégrité (Integrity)
Maintenabilité (Maintanability)
ISI Kef
Menaces
Fautes (Faults)
Erreurs (Errors)
Pannes/ Défaillances (Failures)
Moyens
Prévention des fautes
Tolérance aux fautes
Suppression des fautes
Prévision des fautes
6
Menaces
•
•
L'existence d'erreurs ("design errors") ou d'accidents physiques ("physical damage")
ou de malveillances est inévitable.
– Erreurs de conception, de programmation ou de saisie
– Accidents dus à l'environnement
– Malveillances intentionnelles.
L'une des circonstances précédentes peut ne pas gêner le système ou rester
indétectée longtemps.
Fautes, pannes ("Faults""Failures")
•
Le système est en faute ou en panne si suite à l'un des phénomènes précédents il ne
respecte pas l'une de ses spécifications.
ISI Kef
7
Menaces
•
•
•
Une erreur(Error) est une anomalie de l’état du système et susceptible d’entrainer
une défaillance. Une erreur ne provoque pas systématiquement une défaillance. Le
système peut continuer à délivrer un service correct malgré un certain nombres
d’erreurs affectant son état.
Une faute(fault) est la cause d’une erreur.
Une erreur peut provoquer une défaillance : Une altération du service délivré par le
système.
faute(fault)  erreur dans l’état du système  défaillance dans le système.
•
•
•
Une faute provoque une erreur qui entraîne une défaillance
Un composant est défaillant s’il ne répond plus à sa spécification
Une faute ou panne désigne une défaillance temporaire ou définitive d’un ou
plusieurs composants du système.
ISI Kef
8
Menaces
 Faute: Défaut physique du matériel ou du logiciel
 Erreur: Une valeur incorrecte dans le système
 Défaillance / Panne: Déviation du système par rapport à sa spécification
ISI Kef
9
Le domaine d'utilisation
•
Le domaine d'utilisation du système est particulièrement dangereux et met en jeu des
vies humaines avec des coûts liés aux pannes qui peuvent être immenses.
– Domaine des transports
• Conduite automatique de trains.
• Systèmes de contrôle en avionique.
– Domaine de la production d'énergie
• Conduite de centrales nucléaires.
• Conduite de barrages.
ISI Kef
10
Moyens
•
Plusieurs moyens sont généralement combinés pour mettre en œuvre la sûreté de
fonctionnement d’un système :
– la prévention des fautes(fault prevention) consiste à empêcher
l’occurrence des fautes ;
– la tolérance aux fautes(fault tolerance) consiste à délivrer un service correct en
dépit de l’ocurrence de fautes ;
– l’élimination des fautes(fault removal) consiste à réduire le nombre et la
sévérité des fautes dans le but de les éliminer du système ;
– prévision des fautes(fault forecasting) consiste à estimer le nombre de
fautes courantes et futures ainsi que leurs conséquences.
ISI Kef
11
Moyens
La prévention des fautes(fault prevention)
•
•
L'ensemble des techniques de conception, de fabrication qui permettent de produire
des composants informatiques de très bonne qualité (très fiable).
Le composant ne doit pas tomber en panne
– bonne protection physique
– bonne fabrication
– techniques de génie logiciel, de preuves, de tests => pas d'erreurs.
– Contrôle qualité
– Méthodes de conception,
– Programmation structurée,
– Protection contre les radiations,
– Firewalls,...
ISI Kef
12
Moyens
La tolérance aux fautes ("Fault tolerance")
•
•
•
•
•
L'ensemble des techniques de conception, de fabrication des architectures qui
continuent de fonctionner même en présence de la panne de l'un de leurs
composants.
L'ensemble de l'architecture considérée comme un tout continue de rendre le service
attendu
Détection des erreurs
Recouvrement des erreurs
– rollback
– rollforward
Gestion des fautes:
– Diagnostic,
– Isolation
– Reconfiguration
– Ré-initialisation
ISI Kef
13
Moyens
l’élimination des fautes(fault removal)
•
•
•
Validation,
Vérification
– statique,
– dynamique,
– Y compris les mécanismes de tolérance!
– ==>Injection de fautes
Maintenance
– Corrective
– Préventive
ISI Kef
14
Moyens
prévision des fautes(fault forecasting)
•
•
•
Évaluation du comportement du système
Qualitatif
– Identifier, classifier, analyser les pannes possibles
Quantitatif
– Déterminer la probabilité avec laquelle le système satisfait aux attributs de
dépendabilité.
ISI Kef
15
Attributs
•
•
•
•
•
•
La fiabilité
– Probabilité pour qu'un système soit continûment en fonctionnement sur une
période donnée (entre 0 et t).
La disponibilité
– Probabilité pour qu'un système soit en fonctionnement à un instant t donné.
La maintenabilité
– Probabilité pour qu'un système en panne à l'instant 0 soit réparé à l'instant t.
La Sûreté:
– Probabilité pour qu'un système soit continûment en fonctionnement non
catastrophique sur une période donnée (entre 0 et t).
Confidentialité:
– Ne pas dévoiler des informations sans autorisation
Intégrité:
– Absence d'altérations incorrectes de l'état du système
ISI Kef
Techniques permettant d’atteindre la tolérance
aux fautes
•
16
La tolérance aux fautes est mise en œuvre par la combinaison de deux techniques.
– Le traitement de la faute(fault treatment) qui vise à éviter qu’une faute
survenue ne se reproduise.
• prévoir des composants multiples, pour réduire la probabilité qu’une faute
conduise à une défaillance, réaliser des traitements multiples (par exemple :
réaliser la même opération par des algorithmes différents pour tenter d’éviter
les fautes de conception).
– Le traitement d’erreur(error processing) qui vise à éliminer une erreur avant
qu’elle ne produise une défaillance.
• détecter l’existence d’un état incorrect (erreur), remplacer l’état incorrect par
un état correct (conforme aux spécifications).
ISI Kef
17
Traitement de faute
•
L’objectif du traitement de faute vise à éviter qu’une faute ne se reproduise.
•
On procède au diagnostic de faute(fault diagnosis) qui vise à identifier la faute,
puis, on procède à la passivation(fault passivation) de la faute qui consiste
généralement à neutraliser les composants fautifs en les excluant du système.
ISI Kef
Traitement de l’erreur
•
18
L’objectif du traitement de l’erreur est d’éliminer une erreur affectant le système afin
qu’elle n’entraine de défaillance . Elle peut s’exprimer sur deux formes.
– Le recouvrement d’erreur consiste à remplacer l’état erroné du système par
un état correct ;
– Le masquage d’erreur consiste à compter sur la redondance présente dans
le système pour que celui-ci continue à délivrer un service correct malgré un état
erroné.
ISI Kef
Recouvrement d’erreur
•
19
Deux méthodes sont possibles :
– la reprise consiste à remplacer l’état erroné par un état correct dans lequel
le système était avant l’ocurrence de l’erreur.
– la poursuite consiste à remplacer l’état erroné par un nouvel état correct
construit à partir de l’état erroné.
ISI Kef
Compensation d’erreur
20
•
Elle peut prendre deux formes :
– la détection et compensation d’erreur.
– le masquage d’erreur.
•
La détection et compensation d’erreur consiste à remplacer le composant erroné par
un composant correct. Le masquage d’erreur consiste en une compensation d’erreur.
La reprise demande de faire régulièrement de sauvegardes de l’état du système
appelé point de reprise. Pour transformer un état erroné en un état correct,
on réinitialise l’état du système à partir du dernier point de reprise. La poursuite
consiste à construire un nouvel état correct à partir de l’état erroné.
•
ISI Kef
21
Sûreté de fonctionnement et systèmes répartis
•
La sûreté de fonctionnement d'un système réparti doit être étudiée soigneusement
•
Architecture de n sites en coopération
– Si le taux de panne d'un site est λ
– Chaque site est indispensable
– Le taux de panne du système est n λ .
•
Au contraire une organisation efficace d'un système réparti (techniques de tolérance
aux pannes) atteint des niveaux de sûreté de fonctionnement qu'aucune approche
d'évitement ne peut atteindre (fiabilité, disponibilité, sécurité) à un coût acceptable.
ISI Kef
22
Classification des fautes (1)
•
Des critères
– Origine de la faute
• Type de composant : ex. lignes ou sites
– Cause de la faute: bénignes ou malignes
• Défaillances temporaires ou définitives : si le composant fonctionne il
fonctionne correctement
ex. ligne transmet le msg ou non / site traite le msg ou non
• Défaillances byzantines : comportement arbitraire du composant défaillant.
Si le composant fonctionne, il ne fonctionne par correctement à l’insu des
autres composants.
ex. site répond « blanc » à certains sites et « noir » à d’autres.
ISI Kef
23
Classification des fautes (2)
– Durée de la faute
• Définitive
• Temporaire
– Détectabilité de la faute
• Détectable localement. Réparation par le site lui-même.
• Non détectable localement. Réparation nécessite échange de messages.
ISI Kef
24
Hiérarchie
•
Sites
– Site mort-né : site n’exécute aucune instruction de son algo.
– Site en panne franche : site fonctionne correctement jusqu’à l’apparition de la
panne et cesse totalement de fonctionner.
– Site byzantin : comportement arbitraire.
ISI Kef
25
Typologie (1)
•
•
Panne franche
– Composant fonctionne correctement puis panne et cesse immédiatement de
fonctionner = panne permanente
• Panne franche de site
• Coupure d’une ligne => changement de topologie du réseau
Panne transitoire
– Comportement erroné des composants pendant une certaine période.
Comportement correct ensuite.
• On peut distinguer si la panne n’apparaît qu’une fois ou plus ou moins
périodiquement
• Corruption mémoire
• Annulation d’une transaction
• Perte de messages sur une ligne
ISI Kef
26
Typologie (2)
•
•
Panne temporelle
– Une sortie correcte associée à une requête entrante se manifeste de façon
incohérente avec les spécifications.
• Trop tard ou jamais
• Trop tôt
• Le cas le plus fréquent est celui d'une manifestation trop-tardive.
• Ex. : Surcharge d'un processeur, Horloge trop rapide, Délai de transmission
trop long.
Panne byzantine
– Toute panne engendrant une comportement s’écartant des spécifications
• Fautes byzantines "naturelles"
– erreur physique non détectée (sur une transmission de message,
en mémoire, sur une instruction).
– erreur logicielle amenant un non vérification des spécifications.
• Fautes byzantines "malicieuses"
– comportement visant à faire échouer le système (sabotage,virus ....).
ISI Kef
27
Spécifications
•
•
Spécifications pour les sites
– Si un site n’a pas atteint un état final, il finira par exécuter une autre étape de
l’algorithme
Spécifications pour les liens de communications
– Un site j reçoit un message d’un site i au plus une fois et seulement si i a
précédemment envoyé le message à j
– Si i a envoyé un message à j et j exécute infiniment des étapes de l’algorithme
alors j finira par recevoir le message de i.
ISI Kef
28
Algorithmes Robustes
•
Robuste : Garantir la correction du comportement global du système vis à vis des
spécifications de l’algorithme
– Spécifications définies en terme d’invariants qui doivent être constamment
vérifiés
– Aucun dysfonctionnement n’est toléré pour le système
– Algorithmes robustes masquent les fautes
– Approche dite pessimiste
ISI Kef
29
Algorithmes Robustes : exemple comportemental
•
•
Exclusion Mutuelle
– Propriétés de sûreté et de vivacité toujours vérifiées
– Par exemple, on ne se retrouvera jamais avec une configuration où 2 sites sont
en même temps en SC
Élection
– Un et un seul site sera élu
– Par exemple, à aucun moment il existe une configuration où simultanément
plusieurs sites décident qu’ils sont élus.
ISI Kef
30
Algorithmes auto-stabilisants
•
Finir par garantir la correction du comportement global du système vis à vis des
spécifications de l’algorithme
– Système tolère certaines périodes de dysfonctionnement
– Algorithmes ne masquent pas les fautes
– Approche dite optimiste
ISI Kef
31
Algorithmes Auto-stabilisants: exemple comportemental
•
Exclusion mutuelle
– Propriété de sûreté non vérifié pendant un intervalle de temps
– Deux sites peuvent se retrouver en SC
– MAIS au bout d’un moment le système retrouve un comportement correct
(l’algorithme retrouve de lui même un état valide)
ISI Kef

Documents pareils