Towards Self-aware Virtual Machines - TEL - Thèses en ligne Accéder directement au contenu
Thèse Année : 2014

Towards Self-aware Virtual Machines

Vers des machines virtuelles auto-décrites

Résumé

High-level languages implement reflection which allows a language runtime to inspect and alter its own execution and state. These high-level languages typically run on top of virtual machines (vms) which have been built to create an abstraction layer over hardware. Due to the isolating nature of the vm, reflection is generally limited to the language-side. Several research vms overcome this separation and provide a unified model where there is no more a clear distinction between language-side and vm-side. In such a language runtime it is possible to reflectively modify vm components from language-side as they reside on the same abstraction layer. In this dissertation we follow the same global direction towards a unified language-runtime or self-aware vm. However, instead of looking for a holistic solution we focus on a minimal approach. Instead of using a custom tailored language runtime we use dynamic native code activation from language-side on top of an existing vm. We first present Benzo our framework for dynamic native code activation. Benzo provides a generic but low-level interface to the vm internals. Based on this framework we then evaluate several applications that typically require direct vm support. We show first how Benzo is used to build an efficient ffi interface, allowing for a more structured access to vm internal functions. To evaluate the limitations of Benzo we target two more applications: dynamic primitives and a language-side jit compiler. Both of them require a tight interaction with the underlying vm.
Les langages de haut-niveau supportent des operations réflectives qui permettent à l’ environenment d’exécution d’un langage d’inspecter et de changer son propre état et sa propre exécution. Ces langages de haut-niveau s’exécutent normalement sur une machine virtuelle (vm) qui ajoute une couche d’abstraction au-dessus du matériel. À cause de cette séparation, peu d’opération réflectives sont disponibles pour inspecter et modifier la vm. Plusieurs vms expérimentales offrent de telles opérations réflectives en proposant un modèle unifié qui ne distingue pas la couche vm de la couche langage. Dans cette thèse, nous suivons une approche similaire qui propose un environnement d’exécution unifié et auto-décrit. Nous nous intéressons à une solution minimale. Au lieu de dépendre de modifications d’une vm, nous générons dynamiquement du code natif depuis la couche langage. Nous présentons Benzo, un framework pour la génération dynamique de code natif. Benzo fournit une interface générique et de bas-niveau pour accéder aux fonctionnalités fondamentales de la vm. Grâce à Benzo, nous analysons plusieurs applications qui nécessitent un accès direct à la vm. Nous montrons comment Benzo peut être utilisé pour implémenter une librairie de Foreign Function Interfaces, permettant de faciliter l’accès aux fonctionnalités bas-niveau de la vm. Pour évaluer les limitations de Benzo, nous visons deux autres applications: la génération dynamique de primitive et un compilateur jit (Just-In-Time). Ces deux applications doivent changer le comportement de la vm. Pour cela, elles ont besoin d’une interaction poussée avec la vm.
Fichier principal
Vignette du fichier
2014-05-23.Thesis.Camillo.Bruni.pdf (7.91 Mo) Télécharger le fichier
Loading...

Dates et versions

tel-01097323 , version 1 (19-12-2014)

Identifiants

  • HAL Id : tel-01097323 , version 1

Citer

Camillo Bruni. Towards Self-aware Virtual Machines. Programming Languages [cs.PL]. Université Lille 1 - Sciences et Technologies, 2014. English. ⟨NNT : ⟩. ⟨tel-01097323⟩
194 Consultations
211 Téléchargements

Partager

Gmail Facebook X LinkedIn More