0% ont trouvé ce document utile (0 vote)
218 vues42 pages

Réflexion en systèmes parallèles

Ce résumé décrit l'étude de deux langages concurrents réflexifs, CodA et ABCL/R3. Il présente leur modèle objet et architecture, et donne des exemples d'implémentation de proxy avec CodA et de multiplication distribuée avec ABCL/R3.

Transféré par

Ismail Ouboudrar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
218 vues42 pages

Réflexion en systèmes parallèles

Ce résumé décrit l'étude de deux langages concurrents réflexifs, CodA et ABCL/R3. Il présente leur modèle objet et architecture, et donne des exemples d'implémentation de proxy avec CodA et de multiplication distribuée avec ABCL/R3.

Transféré par

Ismail Ouboudrar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Langages concurrents réflexifs

Etude de l'exemple de CodA et ABCL/R3

Riyadh Baghdadi
Université Pierre et Marie CURIE (UPMC)
[Link]@[Link]

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