Les objets r´
epartis
Pierre Courtieu
Introduction
Les applications distribu´
ees
Remote method invocation (JAVA/RMI)
Exemple 1: Compte en banque
Exemple complet: Calcul d’ˆ
age
Conclusion
Plan
Introduction
Les applications distribu´
ees
Remote method invocation (JAVA/RMI)
Exemple 1: Compte en banque
Exemple complet: Calcul d’ˆ
age
Conclusion
Cours
IPr´
e-requis: Objets, Java
IObjectifs:
IObjets distribu´
es
IProbl´
ematiques des applications distribu´
ees
IApprendre `
a mettre en œuvre un outil: Java RMI
IConclusion:
IFacile `
a mettre en place
ITr`
es puissant
IMais tr`
es difficile `
a programmer
Sources
IDocumentation Java
IJean-Marc Farinone (CNAM)
http://cedric.cnam.fr/farinone/Java/
IJean-Luc Massat (Universit ´
e de la M´
editerran´
ee)
http://www.dil.univ-mrs.fr/massat/ens/java/rmi.html
IOlivier Perrin (LORIA)
http://www.loria.fr/operrin/LicencePro/files/RMI2005.pdf
IMichel Cosnard (INRIA)
http://www-sop.inria.fr/mascotte/Michel.Cosnard/
Service r´
eparti
IEfficacit´
e, r´
epartition des donn´
ees, architecture client/serveur
ICas tr`
es fr´
equent: Service utilis ´
e par plusieurs personnes
travaillant sur plusieurs machines
IArchitecture clients/serveur:
IUn client demande un service au serveur
ILe serveur effectue un traitement puis r´
epond
IExemple: serveur = banque, clients = clients, service = d ´
epˆ
ot,
retrait, solde...
Client/serveur
Client ClientClient
RESEAU
Serveur
Messages
Messages
Les objets fonctionnent en clients/serveur!
IClients = objets appelant les m´
ethodes d’un autre
IServeur = objet dont la m´
ethode est appel´
e
IMessage = appels de m´
ethodes
IId´
ee sous-jacente de l’approche objet depuis le d´
ebut
IPas si simple
Plan
Introduction
Les applications distribu´
ees
Remote method invocation (JAVA/RMI)
Exemple 1: Compte en banque
Exemple complet: Calcul d’ˆ
age
Conclusion
Application distribu´
ee (O. Perrin)
“F´
ed´
eration de programmes distribu´
es qui coop`
erent”
Parall´
elisme, distribution
Selon Michel Cosnard:
D´
efinition commune: Ex´
ecution de plus d’un processus `
a un moment
donn´
e, les processus communiquent
Diff´
erence: Un programme est parall`
ele si les processus interagissent
`
a l’aide de variables partag´
ees. Un programme est distribu´
esi les
processus interagissent en ´
echangeant des donn´
ees
Synchrone/asynchrone
Un programme (parall `
ele ou distribu´
e) est compos´
e de processus
s´
equentiels. L’ex ´
ecution de chaque processus passe successivement
par deux phases:
IUne phase o`
u le processus ne communique pas
IUne phase o`
u le processus communique
Exemple:
1. Calculer
2. lire la valeur partag´
ee X
3. calculer
4. modifier la valeur partag´
ee X
5. ...
1. Calculer
2. requˆ
ete r´
eseau
3. calculer
4. envoi r´
eseau
5. ...
Synchrone/asynchrone
Synchrone: Horloge globale, synchronisation de tous les
processus `
a chaque phase
a.a0|| b.b0= (a,b).(a0
,b0)
Asynchrone: Pas d’horloge globale, chaque traitement local prend
un temps quelconque
a.a0|| b.b0=a.a0
.b.b0ou a.b.b0
.a0ou b.a.b0
.a0. . . entrelacement
synchronisation `
a la mainpar envoi de message, mutex,
s´
emaphores
Acc`
es concurrent aux donn´
ees
Deux processus acc`
edent `
a la mˆ
eme donn´
ee partag ´
ee au mˆ
eme
moment
I2 Lectures simultan´
ees?
I1 lecture + 1 ´
ecriture simultan´
ees?
I2´
ecritures simultan´
ees?
Comportement pr ´
evisible mais probablement incorrect
Pire: Les copies d’une valeur partag ´
ee ne sont pas mises `
a jour!
Acc`
es concurrent aux donn´
ees
Exemple classique: la banque
Processus 1 lit le solde: 150e
Processus 2 lit le solde: 150e
Processus 2 retire 100e
Processus 2 stocke le solde: 50e
Processus 1 soustrait 100e,
le solde devient 50e
Processus 1 stocke le solde: 50e
Solution: le mutex
Solution classique: chaque ressource est munie d’un verrou (mutex)
Un processus prend le verrou lorsqu’il d ´
esire que personne ne modifie
la valeur partag´
ee pendant qu’il effectue un traitement particulier
(section critique) – Si le verrou est d´
ej`
a pris: mise en attente du
processus
Il rend le verrou lorsque la section critique est finie
Mutex: exemple
Processus 1 prend le mutex du solde
Processus 1 lit le solde: 150e
Processus 2 demande le mutex mais ne l’obtient pas attente
Processus 1 soustrait 100e,
le solde devient 50e
Processus 1 stocke le solde: 50e
Processus 1 rend le mutex du solde
Processus 2 prend le mutex du solde
Processus 2 lit le solde: 50e
Processus 2 retire 100e
Processus 2 stocke le solde: -50e
Attention aux blocages!
D´
efinitions
Progression : Un processus d’un syst `
eme synchrone progresse
(normalement) si, `
a l’issue de l’ex ´
ecution d’une phase, l’ex´
ecution
de la phase suivante a lieu au bout d’un temps fini.
Viabilit´
e: Un syst`
eme asynchrone est viable si tous les processus,
qui le composent, progressent.
Inter-blocage : Un syst`
eme asynchrone est en inter-blocage si
aucun des processus, qui le composent, ne peut progresser.
Famine : Si, dans un syst `
eme asynchrone qui n’est pas en
inter-blocage, un processus ne peut plus progresser, alors il est en
situation de famine.
´
Equit´
e: Un syst`
eme asynchrone viable est ´
equitable si, pour tout
processus, la dur´
ee entre deux phases cons´
ecutives est born ´
ee.
Inter-blocage – exemple
Acc`
es `
a une ressource g´
er´
e par un mutex: obtenir /lib´
erer
P1:
X1
Requiert M1
Requiert M2
Y1
Lib`
ere M1
Lib`
ere M2
X2
attente M1
X1
attente M1
attente M2
attente M2
obtient M1
obtient M2
P1:
X2
Requiert M2
Requiert M1
Y2
Lib`
ere M2
Lib`
ere M1
Difficult´
es
Facile d’´
ecrire un programme r´
eparti sans inter-blocage
(synchronisation partout, sections critiques partout)
Difficile d’´
ecrire un programme sans inter-blocage et correct
Extrˆ
emement difficile d’´
ecrire un programme sans inter-blocage, correct
et efficace
Extrˆ
emement difficile de s’assurer qu’un programme r´
eparti est sans
inter-blocage
Extrˆ
emement difficile de s’assurer qu’un programme r´
eparti est correct
Inter-blocage
Des trucs:
IToujours acqu´
erir les mutex dans le m ˆ
eme ordre
INe pas partager les mutex entre des processus de priorit ´
es
diff´
erentes
IMOD ´
ELISER avant de programmer!
INe pas compter sur le langage de programmation
1 / 18 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !