Vous êtes sur la page 1sur 42

Langages concurrents réflexifs

Etude de l'exemple de CodA et ABCL/R3

Riyadh Baghdadi
Université Pierre et Marie CURIE (UPMC)
riyadh.baghdadi@etu.upmc.fr

5 novembre 2010
Motivation

Comment la réflexion peut aider la


programmation des systèmes
parallèles ?
Motivation

Comment la réflexion peut aider la


programmation des systèmes
parallèles ?

La réflexion

Outil puissant qui permet
l'adaptabilité des applications

Manipulation du comportement
des objets
Motivation

Comment la réflexion peut aider la


programmation des systèmes
parallèles ?

La réflexion Les systèmes parallèles



Outil puissant qui permet 
Difficulté de programmation
l'adaptabilité des applications 
Difficulté d'adapter les

Manipulation du comportement applications
des objets
Motivation

Comment la réflexion peut aider la


programmation des systèmes
parallèles ?

La réflexion Les systèmes parallèles



Outil puissant qui permet 
Difficulté de programmation
l'adaptabilité des applications 
Difficulté d'adapter les

Manipulation du comportement applications
des objets
But

Implémenter des fonctionnalités de systèmes parallèles


À l'aide de la réflexion
avec le minimum de modifications de code
Plan

• Exemple 1 : CodA
– Modèle objet (send, accept … )
– Modèle de communication (appel de méthodes...)
– Exemple d'application de réflexion : proxy
• Exemple 2 : ABCL/R3
– Architecture
– Exemple d'application : réplication
• Avantages et limites des langages concurrents réflexifs
Plan

• Exemple 1 : CodA
– Modèle objet (send, accept … )
– Modèle de communication (appel de méthodes...)
– Exemple d'application de réflexion : proxy
• Exemple 2 : ABCL/R3
– Architecture
– Exemple d'application : réplication
• Avantages et limites des langages concurrents réflexifs
CodA


Langage concurrent réflexif, 1995

Chaque comportement = objet
Modèle objet

• Modèle basé sur la communication par messages:


– 1 appel = 1 message

• Les méta-objets de base :


1 Send
2 Accept
3 Queue
4 Receive
5 Protocol
6 Execution
7 State
Exemple de communication
Exemple de communication
Exemple de communication
Exemple de communication
Exemple de communication
Exemple de communication
Exemple de communication
Exemple de communication
Implémenter un proxy à travers la réflexion

• Proxy = intercepter des appels à un objet

• Comment implémenter un proxy à l'aide de :


– la réflexion
– en se basant sur le modèle objet : send, receive, accept...
Implémenter un proxy à travers la réflexion

• Proxy = intercepter des appels à un objet

• Comment implémenter un proxy à l'aide de :


– la réflexion
– en se basant sur le modèle objet : send, receive, accept...

• Modifier le comportement de Accept dans Proxy :


– Transmission du message reçu à l'objet distant
Implémenter un proxy à travers la réflexion

• Proxy = intercepter des appels à un objet

• Comment implémenter un proxy à l'aide de :


– la réflexion
– en se basant sur le modèle objet : send, receive, accept...

• Modifier le comportement de Accept dans Proxy :


– transmission du message reçu à l'objet distant
Exemple de proxy
Exemple de proxy
Exemple de proxy
Exemple de proxy
Exemple de proxy
Exemple de proxy
Plan

• Exemple 1 : CodA
– Model objet (send, accept … )
– Modèle de communication (appel de méthodes...)
– Exemple d'application de réflexion : proxy
• Exemple 2 : ABCL/R3
– Architecture
– Exemple d'application : réplication
• Avantages et limites des langages concurrents réflexifs
ABCL/R3

• Langage concurrent réflexif, Japan, 80s


• Dérivé du Actor Based Concurrent Language (ABCL)

• Architecture :
– Méta-interpréteurs : interprétation des annotations réflexives
– Méta-objets : déscription du comportement des objets
Exemple d'application

Multiplication des vecteurs V1 et V2

V11
V12
V13
X V21 V22 V23 V24 V25
R = V14
V15
Exemple d'application

Multiplication des vecteurs V1 et V2

V11
V12
V13
X V21 V22 V23 V24 V25
R = V14
V15
Exemple d'application

Multiplication des vecteurs V1 et V2

V11
V12
V13
X V21 V22 V23 V24 V25
R = V14
V15
Exemple d'application

Multiplication des vecteurs V1 et V2

V11
V12
V13
X V21 V22 V23 V24 V25
R = V14
V15
Exemple d'application

Multiplication des vecteurs V1 et V2

V11
V12
V13
X V21 V22 V23 V24 V25
R = V14
V15
Cas distribué

Machine 1 Machine 2

V11 V21
V12 V22
V13 V23
V14 V24
V15 V25

V1 V2
Cas distribué

Machine 1 Machine 2

V11 V21 V21


V12 V22 V22
V13 V23 V23
V14 V24 V24
V15 V25 V25

V1 Copie de V2 V2
Cas distribué

Machine 1 Machine 2

V11 V21 V21


V12 V22 V22
V13 V23 V23
V14 V24 V24
V15 V25 V25

V1 Copie de V2 V2
Comment implémenter ça ?

• Qu'est ce qu'on doit implémenter ?


– Un lock sur V2
– Le mécanisme de réplication

• Comment implémenter ça ?
– Lock : modifier “Accept” de V2 (bloquer les messages reçus)
– Réplication :
• Implémenter une méthode replicate-objet
• Modifier le méta-interpréteur
Modification du méta-interpréteur

• On veut ajouter la primitive “replicate (objet)” au langage


• Fonctionnement de l'interpreteur :
– “eval-entry” : evalue l'expression
– “do-method-call” : envoi un message à l'objet qui doit exécuter
l'appel
– l'objet reçoit le message et exécute la méthode demandée
Plan

• Exemple 1 : CodA
– Model objet (send, accept … )
– Modèle de communication (appel de méthodes...)
– Exemple d'application de réflexion : proxy
• Exemple 2 : ABCL/R3
– Architecture
– Exemple d'application : réplication
• Avantages et limites des langages concurrents réflexifs
Avantages/limites des langages concurrents réflexifs

• Modifier le comportement d'un programme sans modifier le code


• Permettre l'ajout d'une extension de programmation parallèle sans modifier
le compilateur

• Limite : les langages concurrents reflexifs ne sont pas adaptés à certaines


formes de problèmes (parallélisation de boucle)
• Limite : les langages concurrents réflexifs sont moins performants
Résumé

• Etude de deux langages réflexifs concurrents (CodA et ABCL/R3)


– Coda
• Model objet : send, receive, accept, queue...
• Exemple de proxy
– ABCL/R3
• Architecture : méta-interpréteurs, méta-objets
• Exemple : implémentation de multiplication distribuée

• Possibilité d'implémenter des fonctionnalités avancées avec un minimum de


modifications
• Cas idéal : tout est transparent à l'application

Vous aimerez peut-être aussi