• Aucun résultat trouvé

Programmation par aspect et Machine Virtuelle Virtuelle

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation par aspect et Machine Virtuelle Virtuelle"

Copied!
14
0
0

Texte intégral

(1)

AOP & MVV - 1

Programmation par aspect Machine Virtuelle Virtuelle et

Bertil Folliot

LIP6 / CNRS, Université Pierre et Marie Curie, Paris 6 INRIA Regal

Bertil.Folliot@lip6.fr

JTE ASF-SIGOPS, AOP, Lille, septembre 2005

Ce projet est, ou a été, partiellement financé par les projets RNRT Phenix (99S0361), France Télécom R&D ISA (001B117), GEMPLUS, le LIP6 (PLERS 2000),

la communauté européenne (IST COACH-34445) et Web2Grid.

Bertil.Folliot@lip6.fr http://vvm.lip6.fr

AOP & MVV - 2

Plan

1. Problématique autour des environnements d'exécution 2. Objectifs de la Machine Virtuelle Virtuelle

3. Programmation de la MVV

4. MVV & AOP : exemples d’applications

5. Conclusion

(2)

AOP & MVV - 3

Introduction :

besoins de la flexibilité logicielle

Multitudes de normes et de standards (de facto ou de jure)

ODP, CORBA, CCM, JAVA, EJB, DCOM, .NET, JINI, BLUETOOTH…

Technologies logicielles rigides (!)

Multiplication des cas particuliers

Qualité de Service, tolérance aux fautes, performances, taille…

Multiplication des «domaines informatiques»

travail coopératif, télétravail, multimédia, mondes virtuels, réseaux actifs, domotique, informatique «embarqué», GRID…

Évolution rapide du matériel

loi de Moore valide pour les X prochaines années (?) PC, PDA, Cartes à puces, étiquettes électroniques

Où est le problème ?

La recherche en système/intergiciel n’est plus d’en re-faire…

trop long, trop coûteux, trop rigide + cf. évolution du matériel

Les besoins des «domaines informatiques» (applications émergentes) changent les objectifs des logiciels

(performances) :

répartition géographique des utilisateurs et des ressource,

forte contrainte de sécurité (données sensibles, copyright, droits d'accès), modèles de données complexes et réparties,

configurations dynamiques de partenaires hétérogènes,

conditions d’interactions inconnues lors de la conception.

(3)

AOP & MVV - 5

Pourquoi est-ce un problème ?

Chaque «domaine» à un environnement d’exécution adapté (langage, API, OS ou «colle OS»)

ex1 : impression - postscript / dvips - «imprimer» / printcap - sél. d’imprimante ex2 : réseaux actifs - langage dédié (bytecode) / send-receive / OS ?

Le nombre de domaines est en forte augmentation

fonction du matériel (PDA…)

ou du logiciel - QdS (réalité virtuelle)

Les besoins changent/évoluent au cours de l’exécution

cf. Internet (latence, bande passante, «hot spot of the week») spécifications initiales (matériel, QdS)

NOUVEAUX langages et/ou API et/ou OS

MAIS figé et/ou non interopérable et/ou difficile à réutiliser

AOP & MVV - 6

Un exemple :

les machines virtuelles

Machines virtuelles “classiques” (ex : Java VM)

En utilisation croissante pour résoudre les problèmes systèmes Applications “portables”, code compact

“sure”, (un peu) spécialisable

Chargement de bytecode, interprétation, JIT-C…

MV classique MyAppli

main() {…

execution engine

object - loader…

(4)

AOP & MVV - 7

Contre-exemple :

les machines virtuelles

Le «domaine» de la JVM suppose : beaucoup de mémoire, pas (peu) d’accès à l’OS, pas (beaucoup) de QdS

f(matériel) ? carte à puce (JavaCard), téléphone (KVM) f(propriétés) ? persistance (Pjama), temps réel (RT-Java) f(temps qui passe) ? gestion de crise (FT-Java)

Les MVs sont une étape dans la bonne direction, MAIS :

peu flexible (nouveau domaine => nouveau langage + nouvelle MV) peu adaptable

difficilement interopérable

Alors quelle approche ?

Ne pas travailler pour le cas général (en général ça

fonctionne bien), mais travailler sur le minimum (KISS)

Extraire la complexité de la solution (système) vers une représentation de haut niveau

Notre solution : Virtualiser la machine virtuelle = MVV

coupe transversale depuis l’application jusqu’au matériel

ou… comment construire l’environnement d’exécution “idéale” (adaptée) à

un problème particulier

(5)

AOP & MVV - 9

Solution : les MVVs

Virtualiser la machine virtuelle = MVV

MVV = [MV]V est une plate-forme d'exécution (MV) dans laquelle on construit son environnement d'exécution (appelé MVlet) : langage, API, modules systèmes…

Une MVlet correspond à un domaine d'application

Spécification exécutable de haut-niveau (écrite en langage VVM) Chargeable/déchargeable dynamiquement

Vérification des propriétés

Un mécanisme d'exécution au sein de la MVV pour toutes les MVlets

Environnement d’exécution «actif»

AOP & MVV - 10

Architecture de la MVV

Execution engine - Virtual processor Object memory VVM

µ-VM

{CPU, memory, I/O}

{OS,ø}

VMlet

loader "SuperVM" "SuperVM"

My appli (type SuperVM) (something to do)

My SuperVMlet

(define-instruction ()) (define-object ())

(define-syntax ()) (define-primitives ()) (define-loader ()) (use-os-module ())

"SuperVM"

Application

loader

(6)

AOP & MVV - 11

Pourquoi l’approche MVV résout le problème

Adaptabilité/spécialisation du support d'exécution aux divers domaines - ou aux applications elles-mêmes (OS + langage)

Flexibilité/extensibilité pour ajouter/modifier des

fonctionnalités, en fonction de l'application, de son utilisation ou des évolutions matérielles (configuration/re-configuration + déploiement)

Interopérabilité pour l'échange de données entre

applications, pour la mobilité (code et/ou donnée) et pour favoriser la réutilisation

Prise en compte de la logique métier (expérience PLERS) tout ne peut/ne doit être adaptable/flexible/interopérable

Programmation des VMlets

Langage interne de la VVM [Scheme]

Programmation de VMlets de langages de programmation :

C (un lexeur/parseur)

Java (un lexeur/parseur + une VM Java complète) [JnJVM]

autres…

Programmation de VMlets de langages de programmation spécialisées (DSL) :

Compilateur : multimédia [Compilette]

Système : temps -réel [VMlet-BOSSA]…

Applications : réseaux actifs [ANTSlet/PLANet], cache Web [CNN], monitoring [C/SPAN]…

Méthodologies : …VVM & AOP ?

(7)

AOP & MVV - 13

AOP (en bref)

Séparation des préoccupations, modularisation, inversion de contrôle, adaptation…

Point de jonction + Tisseur (Langage de programmation + moteur statique/dynamique)

AspectJ, AspectWerkz, Jac, Steamloom…

VMlet : généralisation de l’AOP (ou le contraire) ?

Point de jonction : l’adresse (l’objet, la méthode, la classe, la bibliothèque, etc.)

Tisseur manuel Aspects multiples Vérification

AOP & MVV - 14

VMlets et aspects

Compilation (non ?)

Système (oui !) : temps-réel, etc.

Applications ?

(8)

AOP & MVV - 15

{CPU, memory, I/O}

VVM µ-VM

Système : VMlet-Bossa

{OS,ø}

VMlet-Bossa

(use-os-module ‘bossa’) Politique Linux

Politique EDF

VM temps-réel

Loader : XWin

Bossa Application (pid 13024)

Linux 2.4 (bossa)

scheduler

(root)

Applications ?

Exemple d’un cache Web

Cache local de documents distants

Trois politiques: remplacement, coopération, cohérence Pour le remplacement: pas d’algorithme optimal

algo. de système de gestion de fichiers (FIFO, LRU, LFU…)

algo. spécifique au Web (Hybrid, LNC-R-W3, MIX, Greedy Dual Size…)

Réalisation d’une WebCacheLet - Avantages :

Une nouvelle politique s'écrit (en Scheme) en ~10 minutes Se charge et se compile dans la MVV en 50 ms

Se change (si elle était déjà compilée) en 0,57 ms

Benchmarks : ajout/changement de politique, observation à la volée, mode trace…

L'API du cache Web EST le cache lui-même

Est-ce un aspect ?

(9)

AOP & MVV - 17

VMlet Web cache filter

Nouvelle politique : [E. Casalicchio and M. Colajanni, Scalable Web Cluster with Static and Dynamic Contents, Proceedings of the IEEE International Conference on Cluster Computing (CLUSTER 2000), Chemnitz, Germany, December 2000.]

;; VMlet new replacement policy (define filterPolicy

(lambda (doc)

(if (= 0 (:system.strncmp

(:httpHdr.typeMime doc) "text" 4)) (GDS-cost doc)

(SIZE-cost doc) )

) )

AOP & MVV - 18

Tissage ?

VMlet de reconfiguration

;; VMlet reconfiguration command

(xEvalSwitch filterPolicy (/ (httpR.size repository) 5))

;; VMlet reconfiguration function

(define xEvalSwitch

(lambda (newPolicy size)

(let [(head 0) (oldCost 0)]

(set! currentreview newPolicy)

(set! head (getWorst repository size))

(while head(set! oldCost (:docs.cost (:cell.data head))) (currentreview (:cell.data head))

(:httpR.updt repository (:cell.data head) oldCost)

(set! head (:cell.next head))))))

(10)

AOP & MVV - 19

Cache Web auto-adaptable

VMlet cache Web flexible [CNN] + PANDORA (plate-forme de monitoring auto-adaptable) (+ qq. lignes de codes C

d’intégrations PANDORA/VVM)

= Cache web flexible auto-adaptable [C/SPAN]

VVM et AOP : synthèse

Les VMlets sont des aspects (qui sont des VMlets qui…) Le tisseur est une VMlet (qui est un aspect qui…), mais écrit

par ~le même programmeur

Le tissage et les aspects sont gérés par la VVM

VMlet de Tissage d’aspect ?

Langage d’entrée : XML [VMletXML] (stage DEA 2003) Tisseur : VMletJAP (stage DEA 2005)

Tisseur dynamique d’aspects

avec les performances d’un tissage statique

et qui reste flexible/adaptable/interopérable

(11)

AOP & MVV - 21

Par rapport à l'existant

Machines virtuelles spécialisables

génération d'une MV en fonction des performances, de la taille du code, du domaine, etc. (JavaCard, PLAN, Harissa) : peu/pas extensible, le même travail doit être refait pour chaque domaine

Système d'exploitation flexible / MOP

changement de fonctionnalités et d'interfaces (SPIN, ExoKernel, Fluke, Xen) / Aperios : un unique langage dédié, difficile à manipuler (et à imposer)

Systèmes embarqués

MultOS, Windows CE, SCP, µCLinux, KVM (Sun - réutilisation de CCG-LIP6) : différences avec la problématique ?

Interopérabilité des langages

exécution de plusieurs langages (Java, Smalltalk, VisualBasic pour la Machine Virtuelle Universelle d'IBM) : basé sur une MV existante (Smalltalk), pas extensible

AOP & MVV - 22

Conclusion :

vers un environnement d'exécution actif

Mise à jour de la plate-forme à la volée Délocalisation des fonctionnalités

Interopérabilité extrême

échanges de données et de fonctionnalités (même pour des application écrites dans différents langages)

applets, agents

Le (difficile) travail de construire l'environnement d'exécution, n'est fait qu'une fois pour un domaine

optimisation agressive, spécialisation dynamique

Facilité de programmation (langage de haut niveau et services systèmes dédiés au problème à résoudre) :

réduction du temps de mise sur le marché,

pas de langage de programmation unique.

(12)

AOP & MVV - 23

Questions ?

Références - VVM

http://vvm.lip6.fr/

VVM :

[Bertil Folliot, Ian Piumarta, Fabio Riccardi. Virtual Virtual Machine. Cabernet Radical Workshop, Crète, Septembre 1997.]

[Ian Piumarta, Bertil Folliot, Lionel Seinturier, Carine Baillarguet. Highly configurable operating systems: the VVM approach. Proc. of ECOOP'2000 Workshop on Object Orientation and Operating Systems, Cannes, Juin 2000.]

[Bertil Folliot, Ian Piumarta, Lionel Seinturier, Carine Baillarguet, Christian Khoury, Arthur Léger, Fréderic Ogel.

Beyond flexibility and reflection: the virtual virtual machine approach. NATO Advanced Research Workshop, Environments, Tools and Applications for Cluster Computing. LNCS 2326, Springer-Verlag, pp. 17-26, 2002.]

[Frédéric Ogel, Bertil Folliot, Ian Piumarta. On Reflexive and Dynamically Adaptable Environments for Distributed Computing. Proc. 3rd International Workshop on Distributed Auto-adaptive and Reconfigurable Systems, ICDCS’2003, IEEE, Providence, Rhode Island, Mai 2003.]

YNVM :

[Ian Piumarta, Frederic Ogel, Bertil Folliot. YNVM: dynamic compilation in support of software evolution. In Proc.

Ingeneering Complex Object Oriented System for Evolution, OOPSLA, Tampa Bay, Floride, Octobre 2001.]

VVM et ORB dynamique :

[Bertil Folliot, Ian Piumarta, Lionel Seinturier. Middleware and Reflective Features of the Virtual Virtual Machine.

Proc. of Workshop on Reflective Middleware, IFIP/ACM Middleware’2000, New York, USA, pp. 8-9, Avril 2000.]

[Frédéric Ogel, Bertil Folliot, Ian Piumarta. On Reflexive and Dynamically Adaptable Environments for Distributed Computing. In Proc. 3rd International Workshop on Distributed Auto-adaptive and Reconfigurable Systems, ICDCS’2003, IEEE, Providence, Rhode Island, Mai 2003.]

(13)

AOP & MVV - 25

Références : VMlets

Réseaux actifs :

[Christian Khoury, Bertil Folliot, Ian Piumarta. AAN: A Highly Reflective Active Network. In Proc. 20st IASTED Applied Informatics Conference, Innsbruck, Autriche, Février 2002.]

Web caching :

[Ian Piumarta, Frederic Ogel, Carine Baillarguet, Bertil Folliot. Applying the VVM kernel to Flexible Web Caches. Proc IEEE Workshop on Hot Topics in Operating Systems, HOTOS-VII, Schloss Elmau, RFA, pp. 155, mai 2001.] extended version in research report INRIA.

Corot :

[Arthur Léger, Bertil Folliot, Damien Cailliau. Platform for Software Reconfiguration in Embedded Systems.

Proc. of European Research Seminar on Advances in Distributed Systems, Bertinoro, Italie, Mai 2001.]

[Damien Cailliau , Arthur Léger, Olivier Marin, Bertil Folliot. A joint middleware/configuration language approach for space embedded software update.Proc. DAta Systems In Aerospace , DASIA 2001, (CSA, CNES, ESA), Nice, Mai 2001.]

[Damien Cailliau , Arthur Léger, Bertil Folliot. Using high level configuration language for safer space software update. Proc. International Astronautical Congress de l'IAF, Toulouse, Octobre 2001.]

Documents actifs :

[Gaël Thomas, Bertil Folliot, Ian Piumarta. Documents actifs Journées des Jeunes Chercheurs en Systèmes, Chapitre français de l’ACM-SIGOPS, Hammamet, Tunisie, pp. 441-447, Avril 2002.]

(14)

Références

Documents relatifs

Important : La machine virtuelle Java doit être installée sur la version RELEASE du simulateur Palm TX (simulateur non lancé).. ¾ Décompressez le fichier

Vous pouvez utiliser l'option [Supprimer du disque] pour supprimer une machine virtuelle de vCenter Server et pour supprimer tous les fichiers de machine virtuelle, y compris

CRÉATION D'UNE MACHINE VIRTUELLE BRILLIANTLABS.CA INFO@BRILLIANTLABS.CA. CRÉATION

Description de l’interruption.- On peut afficher un caract`ere `a l’´ecran en utilisant la fonction 02h de l’interruption MS-DOS 21h, en pla¸cant le caract`ere `a afficher

Pour la première étape, il convient de spécifier un nom de votre choix qui sera attribué à la machine virtuelle.. Pour plus de clarté, il est conseillé d'indiquer le nom du

f) Experiments: Furthermore, we will provide authors with the option to perform small experiments with their research work if applicable, i.e., they may try out a specific

The International Workshop on Requirements Engineering for Self-Adaptive and Cyber Physical Systems is a platform to investigate this impact.. 2 A Look Back: RE for SAS and

La conguration de l'adresse de la machine hôte se fait au niveau de l'interface de Virtualbox, tandis que celle de la machine virtuelle se fait via son chier /etc/network/interfaces