Zum Inhalt springen

Virtuelle Maschine

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 18. Januar 2003 um 16:30 Uhr durch 80.136.116.228 (Diskussion). 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 70er und 80er 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:

  • Plattformunabhängigkeit (in begrenztem Maße): Ist auf einer realen maschine eine bestimmte virtuelle Maschine implementiert, so laufen alle Programme für diese virtuelle Maschine auf der realen Maschine.
  • dynamische Optimierung ist möglich

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-Compilern ergibt. Dieser Nachteil wird durch geeignete Optimierungen

(zum Beispiel dynamische Optimierung) verringert.

siehe Smalltalk, Java, Programmiersprache Perl, MMIX

Webreferenz:

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)