Vous êtes sur la page 1sur 18

Objectif du Cours

L’objectif de ce cours est de comprendre comment exploiter efficacement les


machines parallèles, c’est-à-dire comprendre le fonctionnement des architectures, étudier
différentes techniques permettant d’optimiser l’exploitation des ressources et comprendre les
limitations des architectures et des applications.

CT. Nobla TSHILUMBA


Chapitre 1 : Pourquoi le Parallélisme ?

1.1. Qu'est-ce que le parallélisme ?

Le parallélisme est une technique consistant à utiliser plusieurs unités de calculs


(processeurs) pour accélérer l’exécution d’une application. Pour cela, on utilise des
architectures parallèles.

Ces architectures sont de natures différentes. On peut avoir par exemple :

- Machines multiprocesseurs, à mémoire commune ou distribuée


- Processeurs contemporains faisant des calculs en parallèles
En informatique, le parallélisme consiste à mettre en œuvre des
architectures d'électronique numérique permettant de traiter des informations de manière
simultanée, ainsi que les algorithmes spécialisés pour celles-ci. Ces techniques ont pour but de
réaliser le plus grand nombre d'opérations en un temps le plus petit possible.

Le parallélisme désigne l’exécution d’un algorithme en utilisant plusieurs processeurs plutôt


qu’un seul. C’est la division d’un algorithme en tâches pouvant être exécutées en même temps
sur des processeurs différents

Le but est de réduire le temps de résolution d’un problème un utilisant un ordinateur parallèle

1.2. Les limites du mono-processeur

L'augmentation de la vitesse d'un processeur devient de plus en plus coûteuse et les


gains sont de plus en plus limités. Pourtant, les besoins ne diminuent pas !

Une solution : dupliquer les unités de calcul

Par rapport à cette solution, les difficultés sont multiples, notamment :


 la concurrence des codes d'application
 la Gestion des communications/accès mémoire

1.3. Les motivations pour le parallélisme

On espère ainsi accélérer les applications. Certaines applications ont des besoins qui
croissent plus rapidement que la puissance des processeurs. On retiendra par exemple les
domaines de l’aérospatiale, de l’automobile, du web avec les moteurs de recherche, etc.

1.3.1 Besoins des applications

Le parallélisme peut être exploité pour répondre à la puissance de traitement qui


recouvre deux grandes notions : la latence et le débit de traitement.

CT. Nobla TSHILUMBA


 La latence représente le temps nécessaire pour l'exécution d'un traitement.
 Le débit représente le nombre de traitements exécutables par unité de temps.

Réduire la latence est plus difficile qu'augmenter le débit. Dans le premier cas, il s'agit de
lutter contre le temps qui, en dernier ressort, est fixé par les possibilités technologiques. Alors
que, dans le deuxième cas, si plusieurs traitements sont indépendants, l'augmentation du
nombre de ressources suffit pour exécuter plus de traitements en même temps.

La puissance de traitement dépend aussi de la capacité et de l'organisation de la mémoire d'un


ordinateur. Certaines applications requièrent des ensembles de données dont la taille est
supérieure à la capacité d'adressage d'un ordinateur séquentiel. Certaines organisations
d'architectures parallèles permettent d’adresser plus de mémoire que des architectures
séquentielles.

La résistance aux pannes suppose que l'arrêt d'une partie de l'ordinateur (pour panne,
maintenance, etc.) n’entraîne pas son arrêt complet. Si l'élément arrêté est le processeur, il est
évident que seul un autre permet de résister à un manque. La redondance repose donc sur la
mise en parallèle d'éléments assurant les mêmes fonctionnalités.

1.3.2 Limites des architectures séquentielles

Les limites de l'exécution séquentielle découlent des limites des microprocesseurs


actuels. Les microprocesseurs possèdent des formats de leurs données et de leurs opérations
inadéquates aux caractéristiques de certaines applications. Il peut être préférable, en termes de
performance et de coût, de concevoir un ordinateur dont les opérateurs de traitement,
l'organisation mémoire, etc. sont adaptés aux calculs à réaliser. L'utilisation simultanée de
plusieurs ressources entraîne la nécessité de gérer la coordination de ces ressources et
complexifie la programmation.
1.4. Comment s’y prend-t-on alors ?
Le principe de la parallélisation d’une application est expliqué dans le schéma ci-
dessous. Au départ, on a une application séquentielle que l’on souhaite paralléliser. Une
réflexion permet de découper cette application en taches séquentielles. La mise en place
d’outils de communication entre ces taches va permettre de les synchroniser, et doc, de les
exécuter en parallèles.

CT. Nobla TSHILUMBA


Figure 1-1 : Parallélisation d’applications

1.5. Classification des architectures parallèles

Le traitement massivement parallèle (MPP, Massively Parallel Processing) désigne


l'exécution coordonnée d'un programme par plusieurs processeurs focalisés sur différentes
parties du programme, chaque processeur étant doté d'un système d'exploitation et d'une
mémoire qui lui sont propres.
Une machine parallèle est essentiellement un ensemble de processeurs qui coopèrent et
communiquent.

Historiquement, les premières machines parallèles sont des réseaux d'ordinateurs, et des


machines vectorielles et faiblement parallèles (années 70 - IBM 360-90 vectoriel, IRIS 80
triprocesseurs, CRAY 1 vectoriel...).

On distingue classiquement quatre types principaux de parallélisme (Taxonomie de Flynn-


Tanenbaum) : SISD, SIMD, MISD et MIMD. Cette classification est basée sur les notions de
flot de contrôle (deux premières lettres, I voulant dire ''Instruction'') et flot de données (deux
dernières lettres, D voulant dire ''Data'').

1.5.1. Machine SISD

Une machine SISD (Single Instruction Single Data) est ce que l'on appelle d'habitude


une machine de Von Neuman. Une seule instruction est exécutée et une seule donnée (simple,
non-structurée) est traitée à tout instant.

Le code suivant,

CT. Nobla TSHILUMBA


int A[100];

...

for (i=1;100>i;i++)

A[i]=A[i]+A[i+1];

s'exécute sur une machine séquentielle en faisant les additions A[1]+A[2], A[2]+A[3], etc.,
A[99]+A[100] à la suite les unes des autres.

Les machines les plus simples traitent une donnée à la fois : ces systèmes sont dits
« séquentiels ». Ce type de fonctionnement était prédominant pour les ordinateurs personnels
jusqu'à la fin des années 1990.

1.5.2. Machine SIMD

Une machine SIMD (Single Instruction Multiple Data) peut être de plusieurs types,


parallèle ou systolique. En général l'exécution en parallèle de la même instruction se fait en
même temps sur des processeurs différents.

Les systèmes traitant de grandes quantités de données d'une manière uniforme ont intérêt à
être des SIMD (Single Instruction, Multiple Data) ; c'est typiquement le cas des processeurs
vectoriels ou des unités de calcul gérant le traitement du signal comme la vidéo ou le son.

1.5.3. Machine MISD

Une machine MISD (Multiple Instruction Single Data) peut exécuter plusieurs


instructions en même temps sur la même donnée. Cela peut paraître paradoxal mais cela
recouvre un type très ordinaire de micro-parallélisme dans les micro-processeurs modernes :
les processeurs vectoriels et les architectures pipelines.

Le type MISD a été beaucoup plus rarement utilisé, il semble néanmoins adapté à certains
problèmes comme les réseaux neuronaux et aux problèmes temps-réel liés.

1.5.4. Machine MIMD

Le cas des machines MIMD (Multiple Instruction Multiple Data) est le plus intuitif. On


a deux types d'architecture possibles :
 Mémoire partagée
 Mémoire locale avec réseau de communication (Transputer ou par réseau
d'interconnexion), ou système réparti

CT. Nobla TSHILUMBA


a. Mémoire Partagée :
Une machine MIMD à mémoire partagée est principalement constituée de processeurs
avec des horloges indépendantes, donc évoluant de façon asynchrone et communiquant en
écrivant et lisant des valeurs dans une seule et même mémoire (la mémoire partagée).
Le cache de données de chaque processeur induit une difficulté où ce dernier doit avoir les
informations cohérentes aux moments cruciaux.

Architecture simplifiée d'une machine à mémoire partagée

La synchronisation des exécutions des processus est nécessaire dans certains cas. Si elle n'est
pas faite, il y aurait un risque d'incohérence des données.
b. Machine distribuée

En général, l'emploi d'autres mécanismes de communication que la mémoire partagée


pour une machine MIMD est due au fait que les processeurs sont physiquement éloignés et
qu'un partage de petites informations soit raisonnable. Par exemple, le réseau Internet permet
de considérer en un certain sens, tous les ordinateurs reliés comme étant un seul et même
ordinateur distribué, où les processeurs travaillent de façon asynchrone et où les informations
transitent par passage de message.

Les systèmes utilisant plusieurs processeurs ou un processeur multi-cœur sont plus


polyvalents et pleinement parallèles, ce sont des MIMD (Multiple Instructions, Multiple
Data).

Tableau récapitulatif de la taxonomie de Flynn

CT. Nobla TSHILUMBA


Une seule Plusieurs
instruction instructions

Donnée
SISD MISD
unique

Plusieurs
SIMD MIMD
données

1.6. Quelques domaines d’applications du parallélisme


1.6.1. Applications orientées vers les systèmes à tolérance de pannes
L’informatique parallèle peut également être appliqué à la conception de systèmes
informatiques à tolérance de pannes, en particulier par des systèmes réalisant la même
opération en parallèle. Ceci permet d'obtenir une redondance au cas où un composant échoue,
et permet également automatique de détection d'erreur et de correction d'erreur si les résultats
diffèrent.
Ces méthodes peuvent être utilisées pour aider à prévenir les troubles d'événement unique
causés par des erreurs transitoires. Bien que des mesures supplémentaires peuvent être
nécessaires dans les systèmes embarqués ou spécialisés, cette méthode peut fournir une
approche rentable pour obtenir une redondance n-modulaire dans les systèmes impromptus
commerciales.
1.6.2. Applications orientées vers un accroissement de puissance

Il y a beaucoup de cas où l'utilisation d'un seul ordinateur serait possible en principe,


mais l'utilisation d'un système parallélisé est bénéfique pour des raisons pratiques. Par
exemple, il peut être plus rentable pour obtenir le niveau de performance souhaité à l'aide
d’un groupe de plusieurs ordinateurs bas de gamme, par rapport à un seul ordinateur haut de
gamme. Un système parallèle peut fournir plus de fiabilité qu'un système non distribué, car il
n'y a pas de point de défaillance unique . De plus, un système distribué peut être plus facile à
développer et à gérer qu'un système monoprocesseur monolithique.

Chapitre 2 : Système distribué et Système Parallèle


2.1. Système distribué
2.1.1. Définition

CT. Nobla TSHILUMBA


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

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.

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. C’est une Architecture de traitement
répartis à travers le réseau.

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

Définition (pour ce cours) :

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.

Un système distribué est un système disposant d'un ensemble d'entités communicantes,


installées sur une architecture d'ordinateurs indépendants reliés par un réseau de
communication, dans le but de résoudre en coopération une fonctionnalité applicative
commune.

Autrement dit, un système distribué est défini comme étant un ensemble des ressources
physiques et logiques géographiquement dispersées et reliées par un réseau de communication
dans le but de réaliser une tâche commune. Cet ensemble donne aux utilisateurs une vue
unique des données du point de vue logique.

Exemples :

- Réseau physique de machines

CT. Nobla TSHILUMBA


- Un logiciel avec plusieurs processus sur une même machine

2.1.2. Algorithme distribué 

Par définition, un algorithme est un ensemble d’instructions qui régit le déroulement


d’un programme informatique.
  
Un algorithme distribué : se dit d’un algorithme s’il est exécuté de manière simultanée
sur un ensemble de ressources. Cette exécution, en simultanée sur plusieurs ressources
distinctes, permet alors la réalisation d’un seul et même calcul.

Le comportement de chaque processus est déterminé par un algorithme local et la


communication entre les processus se fait par échange de messages uniquement.

CT. Nobla TSHILUMBA


Un algorithme réparti (ou distribué) est une suite d'instructions et il est
généralement un algorithme parallèle (mais pas toujours, exemple, une communication
téléphonique) réparti sur plusieurs sites. Chaque site calcule (i.e. produit de nouveaux
résultats) et communique (i.e. échange des données avec d'autres sites). Un algorithme réparti
décrit le fonctionnement d'un système informatique composé de plusieurs unités de calcul
reliées par un réseau de communication, tels que les routeurs dans Internet1.

L'algorithme d'un site isolé est appelé algorithme local. Il correspond le plus souvent à
un algorithme séquentiel classique exprimé à la manière de la programmation
événementielle : le site réagit à des actions externes (e.g. début de l'algorithme), des
conditions internes (e.g. le site a atteint un état particulier) ou à l'arrivée d'un message.
L'ensemble des algorithmes locaux constitue un algorithme réparti, aussi appelé protocole.
Lorsque tous les algorithmes locaux sont identiques, l'algorithme est dit uniforme.

2.1.3. Intérêt des systèmes distribués

Les systèmes distribués ont plusieurs raisons de leur existence.

 Partage des ressources (données, programme, services) qui permet un travail


collaboratif ;

 Accès distant, c'est-à-dire qu'un même service peut être utilisé par plusieurs acteurs
situés à des endroits différents ;

 Amélioration des performances : la mise en commun de plusieurs unités de calcul


permet d'effectuer des calculs parallélisables en des temps plus courts ;

 Confidentialité : les données brutes ne sont pas disponibles partout au même moment,
seules certaines vues sont exportées ;

 Disponibilité des données en raison de l'existence de plusieurs copies ;

 Maintien d'une vision unique de la base de données malgré la distribution ;

 Réalisation des systèmes à grande capacité d'évolution ;

 Augmentation de la fiabilité grâce à la duplication de machines ou de données, ce qui


induit à une réalisation des systèmes à haute disponibilité.

2.1.4. Quelques domaines d’application des systèmes distribués

Les systèmes distribués sont rencontrés dans notre vie quotidienne :


1
https://fr.wikipedia.org/wiki/Algorithmique_repartie

CT. Nobla TSHILUMBA


 La gestion intégrée des informations d'une entreprise (guichet de banque, agence
de voyage,..) ;

 Internet : l'internet, aujourd'hui, constitue un grand exemple d'un système distribué


le plus large au monde contenant de nombreux sous-systèmes selon le protocole
considéré. Exemple : Web (http), bittorrent (peer-to-peer). Des nombreux
utilisateurs partout dans le monde peuvent utiliser des services offerts par l'internet
comme le WWW, le FTP (File Transfert Protocol) et tant d'autres applications.

 Le WWW représente un système distribué logique consistant en un nombre


considérable de ressources (pages web, fichiers de données et services) référencées
par des URL (Uniform Ressource Locator) ;

 Les téléphones portables ;

 Le contrôle et organisation d'activités en temps réel (télévision interactive)

2.1.5. Difficulté de mise en œuvre des systèmes distribué

La mise en œuvre des systèmes distribués engendre un certain nombre de difficultés dont
voici quelques-unes :

· Gestion de l'hétérogénéité et Cohérence des données

Lors de la mise en place d'un système distribué, il est nécessaire que l'ensemble des
composants travaillent avec des données cohérentes.Cette cohérence des données est
d'autant plus problématique lorsque l'on commence à redonder certains composants pour
augmenter la capacité de traitement et/ou la disponibilité du système.

En effet, les données comme le cache applicatif, le contenu d'une base de données ou bien
les variables de session des utilisateurs Web doivent être synchronisées entre les
différentes instances d'un composant afin d'assurer une cohérence dans les traitements
réalisés.

· Gestion des composants

Un système distribué étant composé d'un ensemble de composants logiciels répartis sur
plusieurs serveurs physiques. Il est nécessaire pour assurer la maintenance corrective et
évolutive du système de dresser une cartographie complète de ce système.

· Disponibilité et détection d'arrêts

Dans un système distribué, l'indisponibilité d'un seul composant du système (serveur, base
de données, ...) peut rendre indisponible le système complet. On mesure alors la
disponibilité de ce type de système à celle de son maillon le plus faible.

Pour couvrir ce risque, il est nécessaire de mettre en place en amont une architecture
permettant d'assurer la disponibilité cible pour tous les composants. Une fois que cette

CT. Nobla TSHILUMBA


architecture est en production, des opérateurs doivent à l'aide de logiciels s'assurer de la
détection au plus tôt d'une défaillance de l'un des composants de l'architecture.

· Gestion de la séquentialité

La mise en place d'un cluster de type actif/actif provoque la création de deux points
d'entrée au système. Dans le cas d'un système distribué d'échange de données par exemple,
il est alors possible que deux modifications successives du même objet soient dirigées vers
deux noeuds différents du cluster, ce qui dans l'absolu peut aboutir à une situation où le
message le plus récent est diffusé en premier vers l'application destinataire.

Si aucune gestion de la séquentialité des messages n'est faite, le message le plus ancien
viendra écraser dans les applications destinataires le message le plus récent.

2.2. Différence entre système parallèle et système distribué


Le traitement parallèle et le traitement distribué sont des méthodes similaires de
l'augmentation de la quantité de puissance de traitement disponible pour une tâche spécifique.
En général, ces méthodes sont utilisées pour résoudre des problèmes impliquant de grandes
quantités de calcul répétitif. Lorsque le problème est décomposé en plusieurs petits morceaux,
des sections individuelles du problème peuvent être calculés sur de nombreux processeurs
simultanément. Cela permet une plus grande puissance de traitement pour être amené à porter
sur le problème que peut être fourni par un seul processeur.
Quelle est la différence entre l'informatique parallèle et distribuée ?
La principale différence entre le traitement parallèle et distribué est que les
configurations parallèles comprennent de nombreux processeurs au sein d'un système unique,
tandis que les configurations distribuées exploiter la puissance de traitement de plusieurs
ordinateurs à la fois.

Parallel vs Distributed Computing

L'informatique distribuée est un type de calcul


Le calcul parallèle est un type de
dans lequel les ordinateurs en réseau
calcul dans lequel plusieurs
communiquent et coordonnent le travail par le
processeurs exécutent plusieurs
biais de la transmission de messages pour
tâches simultanément.
atteindre un objectif commun..

 Nombre d'ordinateurs requis

L'informatique parallèle se L'informatique distribuée se produit entre


produit sur un ordinateur. plusieurs ordinateurs.

CT. Nobla TSHILUMBA


Mécanisme de traitement

En parallèle, plusieurs processeurs En informatique distribuée, les ordinateurs


effectuent le traitement. reposent sur la transmission de messages.

 Synchronisation

Tous les processeurs partagent


Il n'y a pas d'horloge globale en calcul distribué, il
une seule horloge maîtresse pour
utilise des algorithmes de synchronisation.
la synchronisation.

Mémoire

En parallèle, les ordinateurs


peuvent avoir une mémoire En calcul distribué, chaque ordinateur a sa propre
partagée ou une mémoire mémoire.
distribuée.

Usage

Le calcul parallèle est utilisé pour


L'informatique distribuée est utilisée pour
augmenter les performances et
partager des ressources et augmenter l'évolutivité.
pour le calcul scientifique.

2.3. Caractéristiques des systèmes distribués

La performance d'un système distribué se révèle dans ces caractéristiques. Ces


caractéristiques ci-dessous devraient être prises en compte lors de la conception d'un système
distribué.

2.3.1. Interopérabilité

Dans un système distribué, ilse pose un vrai problème de coopération entre différents
composants du système. En effet, ce problème peut être vu au niveau de la couche matériel
(différents réseaux physiques et plateforme matérielle), de la couche système d'exploitation
(divers OS utilisés (UNIX, Windows, Mac OS, Solaris)), de la couche application (langages
de programmation différents) et de la couche middleware (.NET pour Microsoft, Corba pour

CT. Nobla TSHILUMBA


le Consortium OMG). On parle de l'hétérogénéité, un problème dans le partage des ressources
dans un système distribué.

L'interopérabilité est une caractéristique importante qui désigne la capacité à rendre


compatibles deux systèmes quelconques. A son tour, la compatibilité est la capacité qu'ont
deux systèmes à communiquer sans ambiguïté.

En effet, l'interopérabilité vise à réduire le vrai problème de l'hétérogénéité en la masquant par


l'utilisation d'un protocole unique de communication (exemple de TCP/IP pour l'Internet).
Pour les échanges des messages, il faut utiliser des standards qui cachent les différences entre
les différentes plateformes.

Actuellement, il existe deux approches principales de standardisation pour masquer


l'hétérogénéité : les middlewares et les machines virtuelles.

Concrètement, un middleware est représenté par des processus et des ressources d'un
ensemble d'ordinateurs, qui interagissent les uns avec les autres.

Les machines virtuelles permettent de supporter le code mobile désignant la possibilité de


transfert de code d'une machine source à une machine de destination et son exécution sur cette
machine. Au cas des différentes plateformes, le code produit sur l'une ne peut fonctionner sur
l'autre. Pour éviter ce problème, le code mobile est généré d'un langage source pour une
machine virtuelle donnée (exemple de la JVM). En effet, chaque plateforme doit disposer
d'une couche logicielle qui implémente la machine virtuelle car cette dernière représente une
généralisation des middlewares offrant les mêmes services.

2.3.2. Partage des ressources

Le partage des ressources est le facteur principal de motivation pour construire les
systèmes répartis. Des ressources telles que des imprimantes, des dossiers, des pages Web
ou des disques de base de données sont contrôlées par des serveurs du type approprié. Par
exemple, les serveurs Web contrôlent des pages Web et d'autres ressources
d'enchaînement. Des ressources sont consultées par des clients - par exemple, les clients
du web des serveurs s'appellent généralement les browsers (navigateurs) ;

CT. Nobla TSHILUMBA


2.3.3. Ouverture

Cette caractéristique fait mention de l'extensibilité dans la mesure où des composants


peuvent être ajoutés, remplacés ou supprimés dans un système distribué sans en affecter
les autres. Et lorsque nous parlons des composants, nous voyons les matériels (les
périphériques, mémoires, interfaces, etc.) et les logiciels (protocoles, pilote, etc.).
L'ouverture nécessite que les interfaces logicielles soient documentées et accessibles aux
développeurs d'applications.

Il se pose un vrai problème avec l'ouverture au sens que les composants d'un système
distribué sont hétérogènes. Alors, cette qualité d'ouverture est accordée aux systèmes
supportant sans ambages :

a)L'ajout de l'ordinateur au niveau de la couche matérielle ;

b) L'ajout de nouveaux services au niveau application, middleware et système


d'exploitation ;

c) La réimplantation des services anciens.

2.3.4. Expansible

Nous disons qu'un système distribué est expansible lorsque les modifications du système et
des applications ne sont pas nécessaires quant à l'augmentation de la taille de ce système.

2.3.5. Performance

Dans ce cas, le système doit s'adapter à bien fonctionner même quand le nombre
d'utilisateurs ou de ressources augmentent.

2.3.6. Transparence

La transparence cache aux utilisateurs l'architecture, la distribution des ressources, le


fonctionnement de l'application ou du système distribué pour apparaître comme une
application unique cohérente.

La norme ISO (1995) définit différents niveaux de transparences telle que la transparence
d'accès, de localisation, de concurrence, de réplication, de mobilité, de panne, de
performance, d'échelle.

 Transparence d'accès :il s'agit d'utiliser les mêmes opérations pour l'accès aux
ressources distantes que pour celles locales ;

 Transparence à la localisation : l'accès aux ressources indépendamment de leur


emplacement doit être inconnue à l'utilisateur ;

 Transparence à la concurrence : il s'agit de cacher à l'utilisateur l'exécution


possible de plusieurs processus en parallèle avec l'utilisation des ressources
partagées en évitant des interférences ;

CT. Nobla TSHILUMBA


 Transparence à la réplication : la possibilité de dupliquer certains
éléments/ressources (fichiers de base de données) pour augmenter la fiabilité et
améliorer les performances doit être cachée à l'utilisateur ;

 Transparence de mobilité : il s'agit de permettre la migration des ressources et des


clients à l'intérieur d'un système sans influencer le déroulement des applications ;

 Transparence de panne : il s'agit de permettre aux applications des utilisateurs


d'achever leurs exécutions malgré les pannes qui peuvent affecter les composants
d'un système (composants physiques ou logiques) ;

 Transparence à la modification de l'échelle : il s'agit de la possibilité d'une


extension importante d'un système sans influence notable sur les performances des
applications.

 Transparence à la reconfiguration : il s'agit de cacher à l'utilisateur la possibilité


de reconfigurer le système pour en augmenter les performances en fonction de la
charge ;

En effet, la transparence n'est pas toujours possible dans certains cas. Notons le cas de la
duplication d'une imprimante des caractéristiques différentes pour besoin des
performances dans le système. Cependant, l'utilisateur doit toutefois avoir la possibilité de
spécifier concrètement sur quelle imprimante il souhaite imprimer ses documents.

2.3.7. Sécurité

Le problème de sécurité se pose dans tout système informatique. Dans un système


distribué, les ressources doivent être protégées contre des utilisations abusives et
malveillantes. En particulier, le problème de piratage des données sur le réseau de
communication. En ces raisons, il est préférable d'utiliser des périphériques ou logiciels
licenciés. Outre, les connexions doivent être sécurisées par authentification avec les
éléments distants ainsi que les messages circulant sur ce réseau doivent être cryptés en
vue d'éviter des conséquences graves.

Le concept de sécurité des systèmes d'information recouvre un ensemble de méthodes,


techniques et outils chargés de protéger les ressources d'un système d'information afin
d'assurer :

· la disponibilité des services : les services (ordinateurs, réseaux, périphériques,


applications...) et les informations (données, fichiers...) doivent être accessibles aux
personnes autorisées quand elles en ont besoin ;

· la confidentialité des informations : les informations n'appartiennent pas à tout le


monde ; seuls peuvent y accéder ceux qui en ont le droit ;

· l'intégrité des systèmes : les services et les informations (fichiers, messages...) ne

CT. Nobla TSHILUMBA


peuvent être modifiés que par les personnes autorisées (administrateurs, propriétaires...).

2.3.8. Concurrence

Le problème de la concurrence permet l'accès simultané à des ressources par plusieurs


processus. Ce problème se pose pour les systèmes distribués comme pour les systèmes
centralisés. En effet, il y a bien d'autres ressources dont l'accès simultané n'est pas
possible. Dans ce cas, leur manipulation ne peut se faire que par un processus à la fois.
Le cas des ressources physiques telles que l'imprimante mais aussi des ressources
logiques telles que les fichiers, les tables des bases de données, etc. Dans ce cas, les
applications distribuées (reparties)actuelles autorisent l'exécution de plusieurs services
en concurrence (cas de l'accès à une base de données). Chaque demande est prise en
compte par un processus simple appelé thread ; et la gestion de la concurrence fait appel
aux mécanismes de synchronisation classiques.

2.3.9. Tolérance aux pannes

Une panne peut être comprise comme une faille au sein du système pouvant conduire à
des résultats erronés comme aussi engendrer l'arrêt de toute ou partie d'un système
distribué.

Les pannes peuvent résulter des différentes couches et se propager éventuellement aux
autres. Peut-être, c'est une raison matérielle ou logique liée à la conception des
applications, des middlewares et des systèmes d'exploitation.

Ainsi, un système distribué doit être conçu pour masquer ce genre des pannes aux
utilisateurs. La panne de certains serveurs (ou leur réintégration dans le système après la
réparation) ne doit pas perturber l'utilisation du système en terme de fonctionnalité.

2.3.10. Disponibilité

Dans un système distribué, l'indisponibilité d'un seul composant du système (serveur,


base de données, ...) peut rendre indisponible le système complet alors qu'il doit rendre
en permanence des services et d'une façon correcte. On mesure alors la disponibilité de
ce type de système à celle de son maillon le plus faible.

CT. Nobla TSHILUMBA


Chapitre 3 : Applications

3.1. Outils de Modélisation


3.2. Programmation avec C#

CT. Nobla TSHILUMBA

Vous aimerez peut-être aussi