Zum Inhalt springen

Virtuelle Maschine

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 8. Dezember 2002 um 20:49 Uhr durch Vulture (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 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). 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 eine virtuelle Maschine auf einer realen Maschine implementiert, so laufen alle Programme für die virtuellen Maschine auf der realen Maschine.
  • dynamische Optimierung ist möglich

Nachteile einer virtuellen Maschine:

  • Wird dynamische Optimierung nicht ausgenutzt, sind Programme, die auf einer virtuellen Maschine laufen, langsamer, weil in der Regel zumindest Teile des Programms interpretiert statt compiliert werden. Bei Java war dies z.B. bei JIT-Compilern der Fall. (Dort wird zwischen Methoden-Aufrufen interpretiert.)

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)