next up previous contents
Next: Programmausführung Up: No Title Previous: Ziel und Aufbau der   Inhalt


Komponenten virtueller Maschinen

Moderne virtuelle Maschinen beinhalten drei große Subsysteme, die eng miteinander kooperieren. Der vom Quellcode-Compiler erstellte abstrakte Zwischencode muß durch einen Interpreter oder dynamischen Compiler ausgeführt werden - es existiert also eine Komponente zur Programmausführung.

Viele Sprachen, die auf virtuellen Maschinen ausgeführt werden, unterstützen den Ablauf mehrerer Kontrollflüsse. Diese Fähigkeit zur Nebenläufigkeit kann direkt in der implementierten Sprache verankert sein (z.B. Modula-2 Coroutinen), oder scheinbar ausschließlich durch bestimmte Bibliotheksfunktionen implementiert sein (z.B. Smalltalk ,,Processes``). In beiden Fällen muß die virtuelle Maschine den Ablauf mehrerer Kontrollflüsse unterstützen, da die Konsistenz interner Strukturen der VM bei nebenläufigem Zugriff gewährleistet sein muß.

Weiterhin setzen moderne Sprachen eine automatische Speicherverwaltung voraus - hierunter fällt die effiziente Allokation von Speicher sowie Garbage Collection, die unerreichbar gewordenen Speicher wieder dem freien Speicher zuführt.

Abbildung 2.1: Die drei Hauptkomponenten einer virtuellen Maschine
\begin{figure}
\center{\epsfig{file=thebigpicture/threefold-empty,width=7cm}}
\end{figure}

In diesem Kapitel werden die Aufgaben der drei Subsysteme analysiert, das entsprechende Grundlagenwissen eingeführt und die vielfältigen Anknüpfungspunkte zwischen den Komponenten aufgezeigt. Dies geschieht vor allem im Kontext objektorientierter Sprachen, insbesondere Java.




next up previous contents
Next: Programmausführung Up: No Title Previous: Ziel und Aufbau der   Inhalt

2001-02-28