Plataformas de ejecución de software reflexivas

Las Máquinas Virtuales (MV) son artefactos de software complejos. Sus responsabilidades abarcan desde realizar la semántica de algún lenguaje de programación en particular hasta garantizar propiedades tales como la eficiencia, la portabilidad y la seguridad de los programas. Actualmente, las MV son...

Descripción completa

Detalles Bibliográficos
Autor principal: Chari, Guido Martín
Otros Autores: Garbervetsky, Diego
Formato: Tesis doctoral publishedVersion
Lenguaje:Inglés
Publicado: Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales 2017
Materias:
Acceso en línea:https://hdl.handle.net/20.500.12110/tesis_n6346_Chari
https://repositoriouba.sisbi.uba.ar/gsdl/cgi-bin/library.cgi?a=d&c=aextesis&d=tesis_n6346_Chari_oai
Aporte de:
id I28-R145-tesis_n6346_Chari_oai
record_format dspace
institution Universidad de Buenos Aires
institution_str I-28
repository_str R-145
collection Repositorio Digital de la Universidad de Buenos Aires (UBA)
language Inglés
orig_language_str_mv eng
topic MAQUINAS VIRTUALES
REFLEXION
COMPILADORES DINAMICOS
COMPILADORES DE TRAZAS
EVALUACION PARCIAL
ESPECULACION
ADAPTACION DE SOFTWARE
EVOLUCION DE SOFTWARE
VIRTUAL MACHINES
REFLECTION
JUST IN TIME COMPILATION
TRACING COMPILER
PARTIAL EVALUATION
SPECULATION
SOFTWARE ADAPTATION
SOFTWARE EVOLUTION
DYNAMIC ADAPTATION
spellingShingle MAQUINAS VIRTUALES
REFLEXION
COMPILADORES DINAMICOS
COMPILADORES DE TRAZAS
EVALUACION PARCIAL
ESPECULACION
ADAPTACION DE SOFTWARE
EVOLUCION DE SOFTWARE
VIRTUAL MACHINES
REFLECTION
JUST IN TIME COMPILATION
TRACING COMPILER
PARTIAL EVALUATION
SPECULATION
SOFTWARE ADAPTATION
SOFTWARE EVOLUTION
DYNAMIC ADAPTATION
Chari, Guido Martín
Plataformas de ejecución de software reflexivas
topic_facet MAQUINAS VIRTUALES
REFLEXION
COMPILADORES DINAMICOS
COMPILADORES DE TRAZAS
EVALUACION PARCIAL
ESPECULACION
ADAPTACION DE SOFTWARE
EVOLUCION DE SOFTWARE
VIRTUAL MACHINES
REFLECTION
JUST IN TIME COMPILATION
TRACING COMPILER
PARTIAL EVALUATION
SPECULATION
SOFTWARE ADAPTATION
SOFTWARE EVOLUTION
DYNAMIC ADAPTATION
description Las Máquinas Virtuales (MV) son artefactos de software complejos. Sus responsabilidades abarcan desde realizar la semántica de algún lenguaje de programación en particular hasta garantizar propiedades tales como la eficiencia, la portabilidad y la seguridad de los programas. Actualmente, las MV son construidas como “cajas negras”, lo cual reduce significativamente la posibilidad de observar o modificar su comportamiento mientras están siendo ejecutadas. En este trabajo pregonamos que la falta de interacción entre las aplicaciones y las MV impone un límite a las posibilidades de adaptación de los programas, mientras están siendo ejecutados, ante nuevos requerimientos. Para solucionar esta limitación presentamos la noción de plataformas de ejecución reflexivas: un tipo especial de MV que promueve su propia inspección y modificación en tiempo de ejecución permitiendo de este modo a las aplicaciones reconfigurar el comportamiento de la MV cuando sus requerimientos cambian. Proponemos una arquitectura de referencia para construir plataformas de ejecución reflexivas e introducimos una serie de optimizaciones específicamente diseñadas para este tipo de plataformas. En particular proponemos aplicar técnicas de optimización especulativa, técnicas estándar en el contexto de los lenguajes dinámicos, a nivel dela MV misma. Para evaluar nuestro enfoque construimos dos plataformas de ejecución reflexivas, una basada en un compilador de métodos y la otra en un optimizador de trazas. Luego, analizamos una serie de casos de estudio que nos permitieron evaluar sus propiedades distintivas para lidiar con escenarios adaptativos. Comparamos nuestras implementaciones con soluciones alternativas de nivel de lenguaje y argumentamos porqué una plataforma de ejecución reflexiva potencialmente las subsume a todas. Por otra parte, mostramos empíricamente que las MV reflexivas pueden ejecutarse con un desempeño asintótico similar al de las MV estándar (no reflexivas) cuando las capacidades reflexivas no se usan. También que la degradación deldesempeño es bajo (comparado con las soluciones alternativas) cuando estos mecanismos sí son utilizados. Aprovechando nuestras dos implementaciones, estudiamos cómo impactan las diferentes familias de compiladores (por método vs. por trazas) en los resultados finales. Por último, realizamos una serie de experimentos con el objetivo de estudiarlos efectos de exponer el comportamiento de los módulos de compilación a las aplicaciones. Los resultados preliminares muestran que este es un enfoque plausiblepara mejorar el desempeño de aplicaciones sobre las cuales las heurísticas de los compiladores dinámicos producen resultados subóptimos.
author2 Garbervetsky, Diego
author_facet Garbervetsky, Diego
Chari, Guido Martín
format Tesis doctoral
Tesis doctoral
publishedVersion
author Chari, Guido Martín
author_sort Chari, Guido Martín
title Plataformas de ejecución de software reflexivas
title_short Plataformas de ejecución de software reflexivas
title_full Plataformas de ejecución de software reflexivas
title_fullStr Plataformas de ejecución de software reflexivas
title_full_unstemmed Plataformas de ejecución de software reflexivas
title_sort plataformas de ejecución de software reflexivas
publisher Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales
publishDate 2017
url https://hdl.handle.net/20.500.12110/tesis_n6346_Chari
https://repositoriouba.sisbi.uba.ar/gsdl/cgi-bin/library.cgi?a=d&c=aextesis&d=tesis_n6346_Chari_oai
work_keys_str_mv AT chariguidomartin plataformasdeejecuciondesoftwarereflexivas
AT chariguidomartin fullyreflectiveexecutionenvironments
_version_ 1824354724648845312
spelling I28-R145-tesis_n6346_Chari_oai2024-09-02 Garbervetsky, Diego Chari, Guido Martín 2017-12-13 Las Máquinas Virtuales (MV) son artefactos de software complejos. Sus responsabilidades abarcan desde realizar la semántica de algún lenguaje de programación en particular hasta garantizar propiedades tales como la eficiencia, la portabilidad y la seguridad de los programas. Actualmente, las MV son construidas como “cajas negras”, lo cual reduce significativamente la posibilidad de observar o modificar su comportamiento mientras están siendo ejecutadas. En este trabajo pregonamos que la falta de interacción entre las aplicaciones y las MV impone un límite a las posibilidades de adaptación de los programas, mientras están siendo ejecutados, ante nuevos requerimientos. Para solucionar esta limitación presentamos la noción de plataformas de ejecución reflexivas: un tipo especial de MV que promueve su propia inspección y modificación en tiempo de ejecución permitiendo de este modo a las aplicaciones reconfigurar el comportamiento de la MV cuando sus requerimientos cambian. Proponemos una arquitectura de referencia para construir plataformas de ejecución reflexivas e introducimos una serie de optimizaciones específicamente diseñadas para este tipo de plataformas. En particular proponemos aplicar técnicas de optimización especulativa, técnicas estándar en el contexto de los lenguajes dinámicos, a nivel dela MV misma. Para evaluar nuestro enfoque construimos dos plataformas de ejecución reflexivas, una basada en un compilador de métodos y la otra en un optimizador de trazas. Luego, analizamos una serie de casos de estudio que nos permitieron evaluar sus propiedades distintivas para lidiar con escenarios adaptativos. Comparamos nuestras implementaciones con soluciones alternativas de nivel de lenguaje y argumentamos porqué una plataforma de ejecución reflexiva potencialmente las subsume a todas. Por otra parte, mostramos empíricamente que las MV reflexivas pueden ejecutarse con un desempeño asintótico similar al de las MV estándar (no reflexivas) cuando las capacidades reflexivas no se usan. También que la degradación deldesempeño es bajo (comparado con las soluciones alternativas) cuando estos mecanismos sí son utilizados. Aprovechando nuestras dos implementaciones, estudiamos cómo impactan las diferentes familias de compiladores (por método vs. por trazas) en los resultados finales. Por último, realizamos una serie de experimentos con el objetivo de estudiarlos efectos de exponer el comportamiento de los módulos de compilación a las aplicaciones. Los resultados preliminares muestran que este es un enfoque plausiblepara mejorar el desempeño de aplicaciones sobre las cuales las heurísticas de los compiladores dinámicos producen resultados subóptimos. Many programming languages run on top of a Virtual Machine (VM). VMs are complex pieces of software because they realize the language semantics and provide efficiency, portability, and security. Unfortunately, mainstream VMs are engineered as “black boxes” and provide only minimal means to expose their state and behavior at run time. In this thesis we argue that the lack of interaction between applications and VMs put a limit on the adaptation capabilities of (running) applications. To overcome this situation we introduce the notion of fully reflective VM: a new kind of VM providing reflection not only at the application but also at the VM level. In other words, a fully reflective VM provides means to support its own observability and modifiability at run time and enables programming languages to interact with and adapt the underlying VM to changing requirements. We propose a reference architecture for such VMs and discuss some challenges in terms of performance degradation that these systems may induce. We then introduce a series of optimizations targeted specially to this kind of platforms. They are based on a key assumption: that the variability of the VM behavior tend to be low at run time. Accordingly, we apply standard dynamic compilation techniques such as specialization, speculation, and deoptimization on the VM code itself as a means tomitigate the overheads. To validate our claims we built two reflective VMs, one featuring a methodbased just in time (JIT) compiler and the other running on top of a trace-based optimizer. We start our evaluation by analyzing a series of case studies to understand how a reflective VM could deal with unanticipated adaptation scenarios on the fly. Furthermore, we compare our approach with the existing language-level alternatives and provide an elaborated discussion on why a reflective VM would subsume all of them. Then, we empirically show that our implementations can feature similar peak performance of that of standard VMs when their reflective mechanisms are not activated. Moreover, they present low overheads (in comparison to existing alternatives) when VM’s reflective capabilities are used. We also analyzed how the different compilation strategies (per-method vs. tracing) impact on the overallresults. Finally, we conduct a series of experiments in order to study the effects of opening up the compilation module of a reflective VM to the applications. We conclude that it is a plausible approach that brings new opportunities for optimizing algorithms in which the compiler heuristics fail to give optimal results. Fil: Chari, Guido Martín. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina. application/pdf https://hdl.handle.net/20.500.12110/tesis_n6346_Chari eng Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales info:eu-repo/semantics/openAccess https://creativecommons.org/licenses/by-nc-sa/2.5/ar MAQUINAS VIRTUALES REFLEXION COMPILADORES DINAMICOS COMPILADORES DE TRAZAS EVALUACION PARCIAL ESPECULACION ADAPTACION DE SOFTWARE EVOLUCION DE SOFTWARE VIRTUAL MACHINES REFLECTION JUST IN TIME COMPILATION TRACING COMPILER PARTIAL EVALUATION SPECULATION SOFTWARE ADAPTATION SOFTWARE EVOLUTION DYNAMIC ADAPTATION Plataformas de ejecución de software reflexivas Fully reflective execution environments info:eu-repo/semantics/doctoralThesis info:ar-repo/semantics/tesis doctoral info:eu-repo/semantics/publishedVersion https://repositoriouba.sisbi.uba.ar/gsdl/cgi-bin/library.cgi?a=d&c=aextesis&d=tesis_n6346_Chari_oai