Virtuelle Maschinen

Virtuelle Maschinen

Designparadigma

Im Grunde genommen stellt jedes eine virtuelle Maschine dar.
In diesem Sinne ist jede Schicht aus einem Schichtenmodell eine virtuelle Maschine dar.

Emulatoren:

hier wird ein ganzer Rechner simmuliert, d.h. die Maschinenbefehle werden von einer Softwarebasierten virtuellen Maschiene interprtiert (anstatt von einem Harswareprozessor direkt.
Damit kann man auch noch nicht/nicht mehr verfübare Systeme simulieren.

Bochs IA33 Emulator
simmuliert PC
PowerPC-Emulator
C64-Emulator in Java
VMware
Hier kann man ein Betriebssystem mit VMware auf einem Hostsystem booten
Wikipedia
QEmu
Emulationen von einem System auf Linux.
KVM macht das Kernunterstützt
QEMU-Buch Beschreibt QEMU und KVM
VirtualBox
MS Virtual PC
Betriebssystemkerne im Usermode
sind auch virtuelle Maschinen (Überlegung von Walter Jäger)
Captive
ist eine virtuelle Maschine, die die Umgebung eines Treibers liefert.

Nutzen

Emulatoren für Laufzeituntersuchungen

Valgrind
Virtuelle Maschine von i586 auf i586 um diverse Laufzeituntersuchungen machen zu können, unter anderem auch Speicherallokationsfehlersuche

Betriebssystemtechniken

Zweck

Hier steht die gemeinsame Nutzung einer supertollen Hardware und die vereinfachte Verwaltung im Vordergrund.
Beispielsweise eine WWW-Hostingfirma könnte folgende Vorteile haben:

Exo Kerne

Exokerne partionieren die Hardware.

Partitionierung von IBM

IBM OS 390 partitioniert einen Großrechner in mehrere virtuelle Maschinen ???

Wie ist die Beziehung zu den Exo-Kernen ?

Paravirtualisierung

Nach Wikipedia werden abstrakte Softwareschnittstellen für die Hardware bereitgestellt. Dabei muß aber die Implementierung der Betriebsystem-API an das Gastgeberbetriebssystem speziell angepasst werden, bzw. das Gastbetriebssystem speziell angepasst werden - (da muß der Betriebssystemhersteller mitmachen - Vorteil bei Opensource)

Vorteile:

Vorkommen:

Xen (Wikipedia)
erlaubt echte virtualisierung mit Hardwareunterstützung, Effizenter isz jedoch eine Unterst¨tzung im Gastsystem.

Ablaufsystem für Programmiersprachen

Kennzeichen:
1970 : Firma Datapoint für Programmiersprache PL/B
HP hatte um 1970 JIT-Compiler für BASIC-Maschinen
1980: Orginalimplementierung von UCSD-Pascal: p-code wird auf virtueller Maschine ausgeführt
Java Virtual Machine
Die JVM ist die weit verbreiteste und es gibt sie in verschiedenen Implementierungen.
.NET
eine virtuelle Maschine für mehrere Sprachen.
(Leider war die Betriebssystemunabhängigkeit aus firmenstrategischen Gründen weniger das Ziel, ist aber möglich)
The LLVM Compiler Infrastructure
  • Virtuell Instruction Set
  • sprachunabhängige Compiler-Infrastuktur, Optimierer

Vorteile

Portabilität
Sun-Paradigma: Write Once, run Everywhere
Sicherheitsumgebung
(Ada on JVM Kap. 2) Nachteil: Emulationen kosten immer Leistung

Anwendung

Applets im Browser
Browser auf verschiedenen Prozessorarchitekturen wollen Applets nutzen.
Pervasive Computing
http://www.nist.gov/pc2000/
Software Agenten
Ein Softwareagent möchte über verschiedene Rechenknoten mit verschiedenen Prozessorarchitekturen migrieren.

Links

Konzepte und Implementierung virtueller Maschinen Ernst Schneider Diplomarbeit 2000 Uni Hamburg
Wikipedia über Virtualisierung