ScholarGate
Assistent

Laufzeitsysteme und virtuelle Maschinen

Laufzeitsysteme und virtuelle Maschinen stellen die Ausführungsumgebung für Programme bereit, indem sie Zwischencode interpretieren oder kompilieren und die Dienste verwalten, die ein laufendes Programm benötigt.

Thema finden mit PaperMindDemnächstFind papers & topics
Tools & resources
Folien herunterladen
Learn & explore
VideoDemnächst

Definition

Ein Laufzeitsystem ist die Softwareumgebung, die die Ausführung eines Programms über dessen eigenen Code hinaus unterstützt, und eine virtuelle Maschine ist eine abstrakte Ausführungs-Engine, die einen portablen Befehlssatz interpretiert oder kompiliert und Portabilität sowie Laufzeitdienste bereitstellt.

Scope

Dieses Thema behandelt die Schicht zwischen kompiliertem Code und Hardware: Bytecode-Interpreter und abstrakte Maschinen, Just-in-Time (JIT)-Kompilierung, dynamische Dispatch- und Methoden-Lookup, Aufrufkonventionen und Stack-Management sowie Laufzeitdienste wie Ausnahmebehandlung und Reflexion. Es befasst sich mit dem Design portabler virtueller Maschinen und den Techniken, die verwaltete Sprachen effizient machen.

Core questions

  • Wie ermöglichen virtuelle Maschinen Portabilität über Hardware hinweg?
  • Wie kombiniert die Just-in-Time-Kompilierung Interpretation und nativen Code?
  • Wie werden dynamischer Dispatch und Methoden-Lookup effizient gestaltet?
  • Welche Laufzeitdienste müssen eine verwaltete Sprache unterstützen?

Key theories

Architektur portabler virtueller Maschinen
Die Spezifikation der Java Virtual Machine definiert einen portablen, verifizierbaren Bytecode und ein Ausführungsmodell, das zeigt, wie eine virtuelle Maschine eine Sprache von einer bestimmten Hardware entkoppelt.
Just-in-Time-Kompilierung
Aycock untersucht die Techniken, mit denen Laufzeitsysteme Code während der Ausführung in native Form kompilieren, wobei sie den Interpretationsstart mit dem Durchsatz des kompilierten Codes unter Verwendung von Laufzeitinformationen abgleichen.
Inline-Caching für dynamischen Dispatch
Deutsch und Schiffmans Smalltalk-Implementierung führte Inline-Caching und dynamische Übersetzung ein, Schlüsseltechniken, um den Methoden-Lookup in dynamisch dispatchenden Sprachen schnell zu machen.

Clinical relevance

Virtuelle Maschinen und verwaltete Laufzeitsysteme treiben weit verbreitete Plattformen für Java, .NET, JavaScript und Python an und bieten Portabilität, Sicherheit und adaptive Optimierung. JIT-Kompilierung und Inline-Caching sind der Grund, warum hochrangige, dynamische Sprachen eine wettbewerbsfähige Leistung erzielen können.

History

Abstrakte Maschinen reichen bis zu frühen portablen Systemen und Smalltalk zurück, dessen Implementierung von 1984 Pionierarbeit bei der dynamischen Übersetzung und Inline-Caches leistete. Die Java Virtual Machine popularisierte Mitte der 1990er Jahre portablen Bytecode, und adaptive JIT-Compiler wie HotSpot und später JavaScript-Engines brachten aggressive Laufzeitoptimierung in gängige verwaltete Sprachen.

Debates

Interpretation versus Just-in-Time-Kompilierung
Laufzeitdesigner wägen einfache Interpreter mit schnellem Start und geringem Speicherverbrauch gegen JIT-Compiler ab, die eine höhere Spitzenleistung auf Kosten der Aufwärmzeit und Implementierungskomplexität erzielen, wobei oft beide in gestuften Systemen kombiniert werden.

Key figures

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

Related topics

Seminal works

  • lindholm2014
  • aycock2003
  • deutsch1984

Frequently asked questions

Was ist in diesem Kontext eine virtuelle Maschine?
Hier ist eine virtuelle Maschine eine Software-Ausführungs-Engine, die einen portablen Befehlssatz (wie Bytecode) ausführt, die zugrunde liegende Hardware abstrahiert und Laufzeitdienste bereitstellt, anstatt einen ganzen Computer zu emulieren.
Wie trägt die Just-in-Time-Kompilierung zur Leistungssteigerung bei?
Ein JIT-Compiler übersetzt häufig ausgeführte Teile eines Programms zur Laufzeit in nativen Code, wobei er Profiling-Informationen verwendet, die einem Ahead-of-Time-Compiler fehlen, sodass 'heißer' Code nahezu mit nativer Geschwindigkeit läuft.

Methods for this concept

Related concepts