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
- Nutzung und Entwickung von Anwendungssoftware auf Rechnern, die es noch nicht oder nicht
mehr gibt.
Bei neuer Hardware kann so parallel entwickelt werden und die
Brauchbarkeit eines Befehlsmixes kann evaluiert werden.
- Nutzung von Software eines anderen Betriebssystemarchitektur
- Betriebssytemkerne im Usermode sind einfacher zu debuggen, weil man dann
eine komfortable Hostumgebung hat.
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:
- ein Großrechner statt 1000ende PCs aufstellen zu müssen.
- Schwach besuchte WWW-Server brauchen so fast keine Rechenzeit, die von
anderen genutzt werden kann, dasselbe gilt für den Plattenplatz
- Kunden können auch ihre virtuellen selber Systeme pflegen ohne daß
Pfuscher sich gegenseitig stören
- Wahrscheinlich ist auch ein Riesenpool von Plattenspeicher billiger und
ausfallsicherer als 1000ende PC-platten
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:
- Verschiedene Gastsysteme können die Mechanismen des Gastgebersystems nutzen (Softwaretechnisch, systemtechnisch: schlanker)
- Dieses kann effizienter realisiert werden
Vorkommen:
- Xen (Wikipedia)
- erlaubt echte virtualisierung mit Hardwareunterstützung, Effizenter isz jedoch eine Unterst¨tzung im Gastsystem.
Kennzeichen:
- Ein Befehlsmenge wird dynamisch interpretiert
- Die Maschine ist nicht in Hardware gebaut (Vom Microcode mal abgesehen).
- 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