ScholarGate
Assistente

Sistemas de Tempo de Execução e Máquinas Virtuais

Sistemas de tempo de execução e máquinas virtuais fornecem o ambiente de execução para programas, interpretando ou compilando código intermediário e gerenciando os serviços que um programa em execução necessita.

Encontrar tema com PaperMindEm breveFind papers & topics
Tools & resources
Baixar slides
Learn & explore
VídeoEm breve

Definition

Um sistema de tempo de execução é o ambiente de software que suporta a execução de um programa além de seu próprio código, e uma máquina virtual é um motor de execução abstrato que interpreta ou compila um conjunto de instruções portátil, proporcionando portabilidade e serviços de tempo de execução.

Scope

Este tópico abrange a camada entre o código compilado e o hardware: interpretadores de bytecode e máquinas abstratas, compilação just-in-time (JIT), despacho dinâmico e pesquisa de método, convenções de chamada e gerenciamento de pilha, e serviços de tempo de execução como tratamento de exceções e reflexão. Ele aborda o design de máquinas virtuais portáteis e as técnicas que tornam as linguagens gerenciadas eficientes.

Core questions

  • Como as máquinas virtuais proporcionam portabilidade entre hardwares?
  • Como a compilação just-in-time combina interpretação e código nativo?
  • Como o despacho dinâmico e a pesquisa de método são tornados eficientes?
  • Quais serviços de tempo de execução devem suportar uma linguagem gerenciada?

Key theories

Arquitetura de máquina virtual portátil
A especificação da Java Virtual Machine define um bytecode e um modelo de execução portáteis e verificáveis, demonstrando como uma máquina virtual desvincula uma linguagem de um hardware específico.
Compilação just-in-time
Aycock examina as técnicas pelas quais os tempos de execução compilam código para a forma nativa durante a execução, equilibrando a inicialização da interpretação com a produtividade do código compilado usando informações de tempo de execução.
Cache em linha para despacho dinâmico
A implementação do Smalltalk por Deutsch e Schiffman introduziu o cache em linha e a tradução dinâmica, técnicas chave para tornar a pesquisa de método em linguagens de despacho dinâmico rápida.

Clinical relevance

Máquinas virtuais e tempos de execução gerenciados impulsionam plataformas amplamente utilizadas para Java, .NET, JavaScript e Python, proporcionando portabilidade, segurança e otimização adaptativa. A compilação JIT e o cache em linha são as razões pelas quais linguagens de alto nível e dinâmicas podem alcançar desempenho competitivo.

History

Máquinas abstratas datam dos primeiros sistemas portáteis e do Smalltalk, cuja implementação de 1984 foi pioneira na tradução dinâmica e nos caches em linha. A Java Virtual Machine popularizou o bytecode portátil em meados da década de 1990, e compiladores JIT adaptativos como HotSpot e, posteriormente, os motores JavaScript trouxeram otimização agressiva em tempo de execução para as linguagens gerenciadas convencionais.

Debates

Interpretação versus compilação just-in-time
Os projetistas de tempo de execução ponderam entre interpretadores simples com inicialização rápida e baixo uso de memória e compiladores JIT que alcançam maior desempenho de pico ao custo de tempo de aquecimento e complexidade de implementação, frequentemente combinando os dois em sistemas em camadas.

Key figures

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

Related topics

Seminal works

  • lindholm2014
  • aycock2003
  • deutsch1984

Frequently asked questions

O que é uma máquina virtual neste contexto?
Aqui, uma máquina virtual é um motor de execução de software que executa um conjunto de instruções portátil (como bytecode), abstraindo o hardware subjacente e fornecendo serviços de tempo de execução em vez de emular um computador inteiro.
Como a compilação just-in-time ajuda no desempenho?
Um compilador JIT traduz partes frequentemente executadas de um programa para código nativo em tempo de execução, usando informações de perfil que um compilador ahead-of-time não possui, de modo que o código "quente" é executado em velocidade próxima à nativa.

Methods for this concept

Related concepts