Zum Inhalt springen

Virtuelle Maschine

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 27. Mai 2003 um 21:34 Uhr durch Gurt (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.


Eine virtuelle Maschine ist ein Modell eines (oft nicht in realer Hardware existierenden) Prozessors und der zugehörenden Systemarchitektur. Eine virtuelle Maschine ist eine Software, die eine CPU emuliert. Der Aufwand, diese Software auf andere reale CPUs zu übertragen, ist verhältnismäßig gering.

Virtuelle Maschinen spielen heute eine bedeutende Rolle, da Microsoft mit ihrer .NET Architektur dem Beispiel von Sun mit der Java-Virtuellen-Maschine (Java VM) folgt. Das Konzept der virtuellen Maschine wurde bereits in den 1970er und 1980er Jahren angewandt. Bekannt ist das Pascal-P-Code-System (UCSD Pascal) und die virtuelle Maschine, auf der Programme der Programmiersprache Smalltalk ablaufen.

Die Programmiersprache Java wird meist nicht direkt in Maschinencode übersetzt, sondern in so genannten Bytecode, der dann auf einer virtuellen Maschine (JVM) ausgeführt wird. Faktisch ist es aber wegen den Bibliotheken bei Java so, dass aktuelle Versionen nur für Windows und Unix verfügbar sind.

Die JVM ist eine Stapelmaschine (0-Adress-Maschine). D.h. sie nutzt einen Kellerspeicher als Hauptdatenstruktur. Es gibt aber auch registerbasierte virtuelle Maschinen (ein neueres Beispiel ist die parrot-Implementierung von Perl6).


Vorteile einer virtuellen Maschine:

Nachteile einer virtuellen Maschine:

  • Programme, die auf einer virtuellen Maschine sind langsamer als Programme, die speziell für die Zielumgebung übersetzt wurden, da sich immer ein Mehraufwand durch Interpretation oder dynamische Übersetzung zur Laufzeit (JIT-Compiler) ergibt.
    Dieser Nachteil wird durch geeignete Optimierungen (zum Beispiel dynamische Optimierung) verringert.

Siehe auch: Smalltalk, Java, Programmiersprache Perl, MMIX


Weblinks:

  • Pascal-P-Code-Maschine (Das p-System war auch ein komplettes Betriebssystem; auch mit Compilern anderer Sprachen wie Basic und Fortran konnte man für dieses System p-Code erstellen)