ScholarGate
Asistente

Sistemas de tiempo de ejecución y máquinas virtuales

Los sistemas de tiempo de ejecución y las máquinas virtuales proporcionan el entorno de ejecución para los programas, interpretando o compilando código intermedio y gestionando los servicios que un programa en ejecución necesita.

Encontrar tema con PaperMindPróximamenteFind papers & topics
Tools & resources
Descargar diapositivas
Learn & explore
VídeoPróximamente

Definition

Un sistema de tiempo de ejecución es el entorno de software que soporta la ejecución de un programa más allá de su propio código, y una máquina virtual es un motor de ejecución abstracto que interpreta o compila un conjunto de instrucciones portátil, proporcionando portabilidad y servicios de tiempo de ejecución.

Scope

Este tema cubre la capa entre el código compilado y el hardware: intérpretes de bytecode y máquinas abstractas, compilación justo a tiempo (JIT), despacho dinámico y búsqueda de métodos, convenciones de llamada y gestión de pila, y servicios de tiempo de ejecución como el manejo de excepciones y la reflexión. Aborda el diseño de máquinas virtuales portátiles y las técnicas que hacen eficientes los lenguajes gestionados.

Core questions

  • ¿Cómo proporcionan las máquinas virtuales portabilidad entre diferentes tipos de hardware?
  • ¿Cómo combina la compilación justo a tiempo la interpretación y el código nativo?
  • ¿Cómo se hacen eficientes el despacho dinámico y la búsqueda de métodos?
  • ¿Qué servicios de tiempo de ejecución deben soportar un lenguaje gestionado?

Key theories

Arquitectura de máquina virtual portátil
La especificación de la Máquina Virtual de Java define un bytecode y un modelo de ejecución portátiles y verificables, demostrando cómo una máquina virtual desacopla un lenguaje de un hardware particular.
Compilación justo a tiempo
Aycock examina las técnicas mediante las cuales los entornos de ejecución compilan código a formato nativo durante la ejecución, equilibrando el inicio de la interpretación con el rendimiento del código compilado utilizando información en tiempo de ejecución.
Almacenamiento en caché en línea para despacho dinámico
La implementación de Smalltalk de Deutsch y Schiffman introdujo el almacenamiento en caché en línea y la traducción dinámica, técnicas clave para acelerar la búsqueda de métodos en lenguajes con despacho dinámico.

Clinical relevance

Las máquinas virtuales y los entornos de ejecución gestionados impulsan plataformas ampliamente utilizadas para Java, .NET, JavaScript y Python, proporcionando portabilidad, seguridad y optimización adaptativa. La compilación JIT y el almacenamiento en caché en línea son las razones por las que los lenguajes de alto nivel y dinámicos pueden lograr un rendimiento competitivo.

History

Las máquinas abstractas se remontan a los primeros sistemas portátiles y a Smalltalk, cuya implementación de 1984 fue pionera en la traducción dinámica y las cachés en línea. La Máquina Virtual de Java popularizó el bytecode portátil a mediados de la década de 1990, y los compiladores JIT adaptativos como HotSpot y, posteriormente, los motores de JavaScript llevaron la optimización agresiva en tiempo de ejecución a los lenguajes gestionados convencionales.

Debates

Interpretación versus compilación justo a tiempo
Los diseñadores de entornos de ejecución sopesan los intérpretes simples con inicio rápido y bajo uso de memoria frente a los compiladores JIT que logran un mayor rendimiento máximo a costa del tiempo de calentamiento y la complejidad de la implementación, a menudo combinando ambos en sistemas escalonados.

Key figures

  • Peter Deutsch
  • John Aycock
  • James Gosling
  • Gilad Bracha

Related topics

Seminal works

  • lindholm2014
  • aycock2003
  • deutsch1984

Frequently asked questions

¿Qué es una máquina virtual en este contexto?
Aquí, una máquina virtual es un motor de ejecución de software que ejecuta un conjunto de instrucciones portátil (como bytecode), abstrae el hardware subyacente y proporciona servicios en tiempo de ejecución en lugar de emular una computadora completa.
¿Cómo ayuda la compilación justo a tiempo al rendimiento?
Un compilador JIT traduce partes del programa que se ejecutan con frecuencia a código nativo en tiempo de ejecución, utilizando información de perfilado de la que carece un compilador anticipado, de modo que el código 'caliente' se ejecuta a una velocidad casi nativa.

Methods for this concept

Related concepts