Thèse de Guillermo Polito

Virtualisation pour Specialisation et Extension d’Environnements d’Execution

Un environnement d’exécution est l’ensemble des éléments logiciels qui représentent une application pendant son éxecution. Les environnements d’exécution doivent être adaptables à differents contextes. Les progrès des technologies de l’information, tant au niveau logiciel qu’au niveau matériel, rendent ces adaptations nécessaires. Par exemple, nous pouvons envisager d’étendre un language de programmation pour améliorer la productivité des developpeurs. Aussi, nous pouvons envisager de réduire la consommation memoire des applications de manière transparente afin de les adapter à certaines contraintes d’exécution e.g., de la mémoire limitée. Nous proposons Espell, une infrastructure pour la virtualisation d’environnement d’execution de langages orienté-objets haut-niveau. Espell fournit une infrastructure généraliste pour le contrôle et la manipulation d’environnements d’exécution. Une représentation de ’premier-ordre’ de l’environnement d’exécution orienté-objet, que nous appelons object space, fournit une interface haut-niveau qui permet la manipulation de ces environnements et clarifie le contrat entre le langage et la machine virtuelle. Un hyperviseur est client d’un object space et le manipule soit directement au travers d’objets ’miroirs’, soit en y exécutant des expressions arbitraires. Nous avons implementé un prototype de Espell sur Pharo. Nous montrons au travers de notre prototype que cet infrastructure supporte l’amorçage des languages et la construction sur-mesure d’environnement d’éxecution. En utilisant l’amorçage nous initialisons un language orienté objet haut-niveau qui est auto-décrit, se montrant donc plus simple à étendre. Nous avons amorcé quatre langages qui présentent des modèles de programmation différents e.g., avec des ’traits’, avec des variables d’instance de ’premier-ordre’ ou avec une couche réflexive basé sur le concept de ’miroirs’. La taille d’environnements d’éxecution est une technique qui génère une application spécialisé en extrayant seulement le code utilisé pendant l’éxecution d’un programme. Une application taillée inclut seulement les classes et méthodes qu’elle nécessite, et évite que des librairies et des frameworks externes surchargent inutilement la base de code. Notre technique de taille basé sur Espell, créé des versions spécialisées des applications,en sauvant entre un 95% et 99% de la memoire en comparaison avec la distribution officielle de Pharo

Jury

Thèse de l'équipe RMoD soutenue le 13 avril 2015

Retour vers les autres thèses