ScholarGate
Ассистент

Системы времени выполнения и виртуальные машины

Системы времени выполнения и виртуальные машины обеспечивают среду исполнения для программ, интерпретируя или компилируя промежуточный код и управляя службами, необходимыми для работающей программы.

Найти тему в PaperMindСкороFind papers & topics
Tools & resources
Скачать слайды
Learn & explore
ВидеоСкоро

Definition

Система времени выполнения — это программная среда, которая поддерживает выполнение программы за пределами её собственного кода, а виртуальная машина — это абстрактный механизм выполнения, который интерпретирует или компилирует портативный набор инструкций, обеспечивая переносимость и службы времени выполнения.

Scope

Эта тема охватывает уровень между скомпилированным кодом и аппаратным обеспечением: интерпретаторы байт-кода и абстрактные машины, JIT-компиляцию (just-in-time), динамическую диспетчеризацию и поиск методов, соглашения о вызовах и управление стеком, а также службы времени выполнения, такие как обработка исключений и рефлексия. В ней рассматривается проектирование портативных виртуальных машин и методы, повышающие эффективность управляемых языков.

Core questions

  • Как виртуальные машины обеспечивают переносимость между аппаратными платформами?
  • Как JIT-компиляция сочетает интерпретацию и нативный код?
  • Как обеспечивается эффективность динамической диспетчеризации и поиска методов?
  • Какие службы времени выполнения должны поддерживать управляемый язык?

Key theories

Архитектура портативной виртуальной машины
Спецификация виртуальной машины Java определяет портативный, проверяемый байт-код и модель выполнения, демонстрируя, как виртуальная машина отделяет язык от конкретного аппаратного обеспечения.
JIT-компиляция (just-in-time)
Айкок рассматривает методы, с помощью которых среды выполнения компилируют код в нативный формат во время выполнения, балансируя между быстрым запуском интерпретации и пропускной способностью скомпилированного кода с использованием информации времени выполнения.
Встроенное кэширование для динамической диспетчеризации
Реализация Smalltalk Деуча и Шиффмана представила встроенное кэширование и динамическую трансляцию — ключевые методы для ускорения поиска методов в языках с динамической диспетчеризацией.

Clinical relevance

Виртуальные машины и управляемые среды выполнения лежат в основе широко используемых платформ для Java, .NET, JavaScript и Python, обеспечивая переносимость, безопасность и адаптивную оптимизацию. JIT-компиляция и встроенное кэширование объясняют, почему высокоуровневые динамические языки могут достигать конкурентоспособной производительности.

History

Абстрактные машины восходят к ранним портативным системам и Smalltalk, чья реализация 1984 года впервые применила динамическую трансляцию и встроенные кэши. Виртуальная машина Java популяризировала портативный байт-код в середине 1990-х годов, а адаптивные JIT-компиляторы, такие как HotSpot, а затем и движки JavaScript, привнесли агрессивную оптимизацию времени выполнения в основные управляемые языки.

Debates

Интерпретация против JIT-компиляции
Разработчики сред выполнения взвешивают простые интерпретаторы с быстрым запуском и низким потреблением памяти против JIT-компиляторов, которые достигают более высокой пиковой производительности ценой времени разогрева и сложности реализации, часто объединяя их в многоуровневых системах.

Key figures

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

Related topics

Seminal works

  • lindholm2014
  • aycock2003
  • deutsch1984

Frequently asked questions

Что такое виртуальная машина в данном контексте?
Здесь виртуальная машина — это программный механизм выполнения, который запускает портативный набор инструкций (например, байт-код), абстрагируясь от базового аппаратного обеспечения и предоставляя службы времени выполнения, а не эмулируя целый компьютер.
Как JIT-компиляция помогает повысить производительность?
JIT-компилятор преобразует часто выполняемые части программы в нативный код во время выполнения, используя информацию профилирования, которой нет у компилятора, работающего заранее, поэтому «горячий» код работает почти с нативной скоростью.

Methods for this concept

Related concepts