La machine virtuelle virtuelle utopie et/ou réalité ?

Slides:



Advertisements
Présentations similaires
Speedup Prediction for Selective Compilation of Embedded Java Programs
Advertisements

Cours n° 1 Introduction à la programmation
Module Systèmes d’exploitation
Conçu pour le forum SMSI 2009 de lUNESCO pour la séance sur lapprentissage mobile par Jyrki Pulkkinen Directeur général de GeSCI Traduit en français grâce.
Nouveautés pour les développeurs Office System Scott Burmester Responsable des programmes PSPS.
Processus d'expression du besoin
Introduction: Concepts de la programmation
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
GEF 435 Principes des systèmes dexploitation Structure des systèmes dexploitation (Tanenbaum 1.7)
THALES - Service Techniques et Architectures Informatiques - 9 Mars 2001 Colloque 2001 Infrastructure de Confiance sur des Architectures de Réseaux -Internet.
Conception de Programmes Evolutifs Pré Soutenance de TER Année Encadrants : Cathy Escazut et Michel Gautero Auteurs: Paul-Kenji Cahier Sylvain.
L’architecture .net et ASP.net
Exposé de Système - Informatique et Réseau
14 novembre 2002Julien CARSIQUE17 diapositives JAC Java Aspect Components Serveur dapplications Java Open-Source (LGPL) basé sur la Programmation Orientée.
PLAN du COURS Introduction Structure des Systèmes Informatiques
Objectifs Identifier l’interface entre le logiciel de plus bas niveau et le matériel Comprendre la problématique de l’architecture du jeu d’instruction.
la programmation en langage C
3D MEsh Processing Platform
3D MEsh Processing Platform
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
METADYNE... L’architecture clients-serveurs d’un hypermédia adaptatif
Architecture de machines Principes généraux
Alain Le Guennec Jean-Marc Jézéquel Action Triskell
Introduction aux CMS.
Simulateurs de réseaux Ns-3 et Ns-2.
™.
1. Spécialisation de GeoConcept
Développeur informatique
LES OUTILS POUR LA GOUVERNANCE DES DONNÉES LA PASSION DES DONNÉES LA PRÉCISION DES RÉSULTATS.
Programmation Approche composants Ing5 SI
Logiciels.
[photo d'un système] Schéma ordonnancement XML Évaluation Code C Modélisation Solution GÉNÉRATEUR AUTOMATIQUE DE CODE pour OUTIL DE MODÉLISATION-IMPLANTATION.
Microsoft dot Net Extrait du cours. La programmation fenêtrée facile. Une approche objet. Philippe Garraud: Formateur indépendant.
Structures des Systèmes d’Exploitation
Dégradation élégante dinterfaces- utilisateur. Description du problème Construction dinterfaces-utilisateur pour: des systèmes dinformation multiplate-formes.
Intégration ActiveXML - Xyleme
Amorçage des compilateurs Un compilateur est un programme écrit dans un langage Peut-il être écrit dans le langage cible ? dans le langage source ? comment.
© Petko ValtchevUniversité de Montréal Janvier IFT 2251 Génie Logiciel Notions de Base Hiver 2002 Petko Valtchev.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 1 : Introduction.
Les systèmes multiplateformes
La gestion par activités (ABM)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Introduction à la programmation orientée objets
Efficacité des algorithmes
Architecture d’un système expert
Transformation de modèles Kick Off Motor Jean Marc Jézéquel & Didier Vojtisek La vision Triskell : Umlaut NG.
Jacques Cartier, enseignant à l’Université de Franche-Comté Unité de Formation et de Recherche - Sciences du Langage, de l’Homme et de la Société Besançon.
Présentation de CORBA et de IIOP
SYSTEMES D’EXPLOITATION
Cours Architecture des Systèmes Informatiques
8INF856 Programmation sur architectures parallèles
Approches Formelles en Systèmes d'information
Algorithmes et Programmation
Master IT - Génie Informatique
Introduction au Génie Logiciel
Approche Cross layer Dr Mekkakia Maaza Zoulikha Cours M2 SIR
1 IFT 099 Introduction à la programmation. 2 Plan du cours (sem. 1) 1.Introduction - les ordinateurs 2.La programmation procédurale 3.La programmation.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
L’enseignement de spécialité SLAM
PaCO++ André Ribes Réunion Hydrogrid Rennes 15/09/03.
Une brève présentation de C# Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Schéma de principe de nagios nrpe httpd nagios sonde « check_* »
21/02/2003DEA DISIC 1 Grid Computing Programming the grid: Distributed Software Components, P2P and Grid Web Services for Scientific Applications Tarak.
Présentation de Qt Iris 1
1.1: notions de bases de l’informatique
Présentation de la méthode Merise
Café In: A quoi ca sert la recherche sur la programmation? Comment peut on faire travailler des ordinateurs ensemble? Ludovic Henrio SCALE TeamSCALE Team.
1 La Coordination dans les Systèmes d’Information Orientés Agents (SIOA) Participants IRIT-UT1 : E.Andonoff, L. Bouzguenda,J. Cardoso, C. Hanachi, C. Sibertin-Blanc,
Transcription de la présentation:

La machine virtuelle virtuelle utopie et/ou réalité ? Bertil Folliot Ian Piumarta Lionel Seinturier Carine Baillarguet LIP6 /CNRS - thème SRC, Université Paris 6 INRIA Rocquencourt - projet SOR Bertil.Folliot@lip6.fr Lionel.Seinturier@lip6.fr www-sor.inria.fr/~vvm Projet financé par un RNRT (Phenix 99S0361) une CTI FT (ISA 001B117) une ACI jeunes chercheurs (AProDis) un projet LIP6 (PLERS) But de la MVV : proposer et mettre en œuvre un système d'exploitation et un environnement d'exécution qui contrairement aux systèmes et aux environnements habituels soit flexible, extensible et adaptable aux besoins des applications.

Besoins des applications modernes Environnement d'exécution actif Adaptabilité/spécialisation : OS + langage Flexibilité/extensibilité pour ajouter/modifier des fonctionnalités, en fonction de l'application, de son utilisation ou des évolutions matérielles Écrire efficacement des applications est difficile : un domaine particulier nécessite un environnement approprié (OS+langage). La plupart des OS actuels sont rigides ==> la complexité explose Les environnements d'exécution actuels sont peu appropriés aux applications modernes : Travail coopératif, systèmes embarqués, cartes à puce, téléphonie mobile, multimédia, mondes virtuels, réseaux actifs. Répartition géographique des utilisateurs et des ressources, forte contrainte de sécurité (données sensibles, copyright, droits d'accès), modèles de données complexes, configurations dynamiques de partenaires hétérogènes Le matériel évolue rapidement : les performances augmentent, les prix et la taille diminuent et les OS "classiques" n'ont pas le temps de suivre. Mise à jour de la plate-forme à la volée Délocalisation des fonctionnalités É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

Machines virtuelles Machines virtuelles “classiques” (ex : Java VM) En utilisation croissante pour résoudre les problèmes systèmes Applications portables, compactes, “sures”, (un peu) spécialisables Chargement de bytecode, interprétation, JIT MV classique MyAppli main() {} moteur d'exécution chargeur d'objets Machines virtuelles (contre-exemple - inconvénients) f(matériel) : carte à puce f(propriétés) : temps réél f(temps qui passe) : gestion de crise Généralisation : 1) spécialisation statique - fs() connue à l'avance 2) spécialisation dynamique fd() connue à l'exécution` 1) long, couteux à développer - rigide une fois déployée 2) ne fonctionne que si fs(fd()) ==> idem 1 MAIS peu flexible (nouveau domaine => nouveau langage + nouvelle MV) pas adaptable (évolution du langage) pas intéropérable

Objectifs Construire une plate-forme d'exécution (minimale) dans laquelle chaque expert informatique d'un domaine construit son environnement d'exécution (OS, API, langage) sur lequel les programmeurs développent les solutions Adaptation et flexibilité et interopérabilité Quel est le problème ? Ne pas travailler pour le cas général (en général ça fonctionne bien) mais travailler sur le minimum 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éal” adapté à un problème particulier Environnement d'exécution actif Mise à jour de la plate-forme à la volée Délocalisation des fonctionnalités É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

Machine Virtuelle Virtuelle MVV = une plate-forme d'exécution (MV) dans laquelle on construit son environnement d'exécution (appelé MVlet) : langage, API, modules systèmes, … type: maVMlet main() { ... } monAppli code natif interpréteur optimiseur générateur de code myPush { ... } getList { ... } def-ins myPush def-prim getList maVMlet Une MVlet correspond à un domaine d'application Spécification exécutable de haut-niveau Chargeable/déchargeable dynamiquement Vérification des propriétés Un seul mécanisme d'exécution au sein de la MVV pour toutes les MVlets Favorise l'interopérabilité et la réutilisation de code existant Partage les ressources physiques entre les MVlets Permet d'incorporer des optimisations agressives La MVV ne résoud pas le probème applicatif en lui-même ressource minimale mémoire, E/S, CPU MV d'environnement système MV d'environnement applicatif

MVV & AOP Programmation par aspects (AOP) améliorer et augmenter la modularité des applications gérer le code enchevêtré Un aspect une unité de décomposition transverse [conception] aux fonctionalités de l'application une structure logicielle [implantation] Transversalité des aspects inhérente dans les applications complexes traduit un besoin d'intégration de l'application dans son environnement ne peut pas forcément être traitée par les approches habituelles code enchevêtré résultant de l'ajout et de la cohabitation de nombreuses fonctionnalités exemple : audit, exceptions, optimisation, comm distante, synchro, persistance des données le code devient redondant (le même fragment se retrouve en de multiples endroits) la compréhension globale de l'application devient + difficile les modificiations deviennent dures : retrouver toutes les occurrences, être sûr de les modifier de façon cohérente, veiller à ne pas les modifier accidentellement en modifiant une autre fonctionnalité => coûts de développement et de maintenance importants ... transpa - convergence langage/système - ex à base de librairies, aspects langages : gestion d'exception, optimisation

MVV & AOP Principe de la programmation par aspects aspect Application tresseur d'aspects Application augmentée par les aspects compilation/ interprétation application méta modèle points de jonction Le méta-modèle comprend la définition de points de jonction. Ce sont les endroits dans le code de l'application où les aspects vont pouvoir être appliqués. Exemple : appel de méthode, réception d'un appel de méthode, levée d'une exception, tout autre élément syntaxique ou sémantique du langage, voire même des patterns soit de code (par ex pour l'optimisation, inlining de boucle, dérécursivation), soit d'interaction (traitement sur une chaîne d'appel) Le tresseur d'aspects définit quand et comment les aspects vont être exécutés en fonction des points de jonction définis.

dynamique d'applications MVV & AOP Niveau langage Niveau environnement d'exécution méta-modèle tresseur accès réflexif au code d'une application reconfiguration dynamique d'applications niveau langage : ce qui est nécessaire pour l'AOP niveau environnement d'exécution : ce que permet la MVV Gains escomptés performances (recompilation dynamique) facilité d'écriture du tresseur (MVlet)

MVV & Distribution des connaissances Notion d'information active La MVV sert de base pour concevoir un environnement d'exécution actif pour la mobilité et le partage d'information Ajout dynamique de nouvelles connaissances (sous forme de règles, programmes, ...) pour traiter l'information

Réalisation RVM et µ-MV Machines virtuelles à la Scheme Disponible (900Ko) sous licence GPL Générateur dynamique de code de MV Chargement dynamique de bibliothèque système Applications Réseaux actifs : PLANlet et ANTSlet Satellite PLERS reconfiguration logiciel pour le satellite COROT 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) / Aperios : un unique langage dédié 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