Inhalt
Einsatz virtueller Systemumgebungen (System VMs) hat
vor allem bei den Serversystemen in den letzten Jahren wieder
zugenommen. Mit steigender Leistung der Prozessoren sind
mittlerweile auch sehr kostengünstige Maschinen prinzipiell in
der Lage, mehrere vollständige Betriebssysteminstanzen
(Gastsysteme
) als eine Form virtueller
Maschinen (VMs)
auf einem einzigen Rechner gleichzeitig zu betreiben. Aus
Sicht der Benutzer, respektive auf Gastsystemen laufender
Prozesse, ist dieser Umstand praktisch transparent.
Derzeit noch weiter verbreitet sind Process VMs. Neben allgegenwärtigen Verfahren wie präemptivem Multitasking spielen hier insbesondere High-Level-Language VMs wie Sun Java oder Microsoft .net eine Rolle, die mittels dynamischer Übersetzung portabilität über Plattformgrenzen hinweg sichern.
Ansätze und Varianten virtueller Plattformen sind praktisch so vielfältig die Systemschnitte in modernen Informationssystemen. Prinzipiell gibt es rein hard- und rein softwarebasierte, oder aber hybride Systeme, die beide Ansätze verbinden.
Die Seminarthemen decken einen möglichst breiten Anteil der wichtigsten Virtualisierungstechnologien ab:
- Process VMs
- System VMs
Themen
Die folgende Themenliste ist bis auf weiteres im Aufbau befindlich. Teile werden noch überarbeitet. Weitere Themen werden bis zum Vorbesprechungstermin noch eingefügt. Wer eine bestimmte Software oder bestimmte Konzepte kennt oder vermisst, kann auch gerne Vorschläge an mich schicken. Die Reihenfolge entspricht noch nicht immer der zu erwartenden Reihenfolge der Vortragstermine.
26.4.2006: Von Real Machines zu Virtual Machines
- Themen
- Prozessoren und Betriebssysteme und deren Organisation und Architektur sind Grundlage jeder Virtualisierung. Begriffsklärung: ISA, System ISA, User ISA, Syscalls, ABI, Processor- und Memory Management, Virtual Memory, Process VMs, System VMs, VM Monitore und Hypervisors, Hosted System VMs.
- Fallstudien
-
Intel IA-32 (CISC): Befehlssatz, Privilege Levels,
Paging
RISC: evtl. IBM PowerPC.
- Bearbeiter
- Gerd Kainz
- Betreuer
- Daniel Stodden
3.5.2006: Emulation
- Bearbeiter
- Periklis Tsirakidis
- Betreuer
- Josef Weidendorfer
3.5.2006: Process VMs
- Fallstudien
- Digital FX!32
- Bearbeiter
- Periklis Tsirakidis
- Betreuer
- Josef Weidendorfer
24.5.2006: Same-ISA Process VMs und Binäre Optimierung
- Fallstudien
- Valgrind
- Bearbeiter
- Michael Fink
- Betreuer
- Josef Weidendorfer
31.5.2006: High-Level Language Virtual Machines
- Themen
- Virtual ISAs und Stackmaschinen. Objektorientierte Metadata-Architekturen. Interpretation, Just-In-Time-Compilation.
- Fallstudien
- Sun Java VM, Jikes, MS CLI und IL
- Bearbeiter
- Sebastian Wegener
- Betreuer
- Georg Acher
14.6.2006: System VMs
- Themen
- Virtualisierung von Systemressourcen: Prozessoren, Speicher und I/O. Performanceimplikationen und Optimierung.
- Fallstudien
-
VMWare ESX Server,
VMWare Workstation
Eventuell weitere: IBM zSeries, iSeries, etc.
- Bearbeiter
- Thomas Klitzing
- Betreuer
- Daniel Stodden
21.6.2006: Paravirtualisierung
- Themen
- Portierung nativen Betriebssytemcodes in virtuelle Softwareumgebungen. Design software-basierter Schnittstellen für System-VMs (Hypercalls), sowie deren Architektur.
- Fallstudien
- Xen, User Mode Linux
- Betreuer
- Daniel Stodden
- Bearbeiter
- Christian Kern
- Anmerkungen
- 1 Vortrag
7.6.2006: Codesigned Virtual Machines
- Themen
- ISA-Emulation in Software und Hardware: Code Morphing und -Caching. Hardware-realisierte virtuelle ISAs.
- Fallstudien
- Intel P6 oder Pentium 4, Transmeta Crusoe, IBM AS/400
- Betreuer
- Josef Weidendorfer
- Bearbeiter
- Stefan Kiendl
21.6.2006: Intel VT-x (Vanderpool) und AMD Pacifica
- Themen
- Aktuelle und kommende Hardwareunterstützung für die Partitionierung von IA-32, EM64-T und AMD64-Systemen.
- Betreuer
- Daniel Stodden
- Bearbeiter
- Christian Kern
- Dokumentation
- Ausarbeitung: , Folien:
Hintergrund
Allen Varianten ist gemein, daß Gastsysteme in voller Isolation ausgeführt werden. Weder auftretende Fehler noch erhöhter Resourcenbedarf im einen Gastsystem sollten die Funktion eines anderen beeinträchtigen. Der Gedanke eines Betriebsystems als Gastsystem auf einer virtuellen Abstraktionsschicht ist leicht vergleichbar mit dem Prozessmodell unter Betriebssytemen mit präemptivem Multitasking.
Tatsächlich ist bereits die Laufzeitumgebung eines Prozesses auf einer Workstation nichts anderes als eine virtuelle Maschine. Reine Process VMs, wie die Java VM oder der Microsoft .net zugrunde liegende intermediate layer ergänzen diesen Gedanken um plattformneutralen Bytecode als Befehlssatz. Mit durchgehender Objektorientierung bis in den Zwischencode bieten sie außerdem deutlich verbesserte Unterstützung für moderne Methoden der Softwaretechnik.
Durch Einsatz virtualisierter Plattformschnittstellen in
Hardware, in ihrer binärform (ABIs),
können damit über Jahrzehnte und eine entsprechende Anzahl von
Prozessorgenerationen hinweg gepflegt werden, ohne
Kompatibilität zu Vorversion einzubüßen und kostspielige und
riskante Anpassungen an der Anwendung zu erfordern. Ein bekanntes Beispiel sind kostspielige
Mainframe wie die IBM zSeries. Sie
sind teuer, unterstützen aber dafür Teilung aller
Hardwareresourcen, wie zum Beispiel auch von I/O Subsystemen,
in virtuelle Partitionen
. Die Vorteile sind hohe
Skalierbarkeit, leichtere Konsolidierung von Einzelsystemen,
geringe Wartungskosten und, bei entsprechend aufwändiger
Systemarchitektur, eine erheblich höhere Ausfallsicherheit bei
mit der Verfügbarkeit moderner Fertigungstechnologien trotzdem
wachsender Performance.
Dazwischen liegen sogenannte codesigned VMs. Das sind Prozessoren, deren Schnittstelle nicht als Zielplattform für die Anwendungsentwicklung mit Hilfe eines Compilers entworfen wurde, sondern lediglich Basis einer vollständig oder teilweise virtualisierten ISA ist. Deren Umsetzung kann im Extremfall vollständig in Software implementiert werden. Ein prominentes Beispiel für eine reine Software-ISA sind die Crusoe- und Efficeon-Prozessorfamilien von Transmeta, auf denen ein sogenannter Code-Morphing Layer x86-Instruktionen zur Laufzeit auf einen VLIW-orientierten Befehlssatz übersetzt.
Im Kontrast zu den hardwarebasierten Lösungen stehen zunächst reine Software-Monitore, die schon auf Commodity-Hardware wie IA32- oder AMD-Prozessoren brauchbare Ergebnisse liefern. Die Mehrheit davon sind sogenannte System-VMs, d.h. vollständige Betriebsysteme in Kombination mit der darauf aufbauenden Benutzersoftware. Reine Plattformemulationen, z.B. Bochs oder VirtualPC von Connectix (mittlerweile Microsoft) emulieren im Bedarfsfall gleich den gesamten Befehlssatz, allerdings bei entsprechendem Resourcenbedarf.
Deutlich effizientere System VMs emulieren lediglich privilegierte Operationen und erlauben damit bereits den Betrieb weitgehend unmodifizierter Systemsoftware. Sie setzen im Gegensatz zur Emulation allerdings zunächst voraus, daß der eingesetzte Code auf der zugrunde liegenden Hardwarearchitektur lauffähig ist. Gastsystemen werden dabei keine, oder nur unkritische privilegierte Operationen zugestanden – die Vergabe der Betriebsmittel erfolgt in erster Linie durch das VM-System und erst in zweiter Instanz durch das Gastsystem.
Paravirtuelle
System-VMs
wie a Xen
abstrahieren alle Hardwareschnittstellen in Software und
werden damit effizienter, setzen aber eine Portierung des
Betriebssystems voraus. Der Ansatz funktioniert auch
für hosted System-VMs: User Mode Linux
(UML) ist eine Portierung des Linux Kernels auf sich selbst,
d.h. ein Linux-Kernel wiederum auf dem Linux-ABI. Der UML-Kern
läuft damit als regulärer Benutzerprozeß auf dem
Host-Betriebsystem.
Alternative, aber auch deutlich komplexere Methoden erlauben den Betrieb von zunächst unmodifiziertem Code. Sie erschließen damit einen breiteren Anwendungsbereich, allerdings auch bei entsprechendem Aufwand: Bekannte Virtualisierungspakete wie VMWare modifizieren dynamisch Teile des Gastsystems um die damit einhergehenden Perfomancenachteile zu minimieren.
Während deren Transparenz auf Prozessoren, die ursprünglich für den klassischen Desktop- und Workstationbestrieb entwickelt wurden, z.B. der x86-Architektur, Grenzen gesetzt sind, hat Intel hat im Rahmen seiner Vanderpool-Initiative bereits entsprechende Spezifikationen für die IA32-Architektur vorgestellt. Aktuelle Prozessorgeneration bieten damit breitere Virtualisierungsunterstützung in Prozessor- und Systemarchitektur. AMD entwickelt derzeit unter der Bezeichnung Pacifica eine vergleichbare Technik.
Anforderungen
Vorkenntnisse
Das Seminar zielt nicht nur auf Anwendungen, sondern vor allem auf Design und Implementierung von Hardware-, Schnittstellen- und Systemvirtualisierung. Solche System stützen sich auf z.T. sehr unterschiedlichen Ebenen moderner Rechensysteme ab. Das Thema vereinigt damit Teile mehrerer Kerngebiete der technischen und angewandten Informatik:
- Mikroprozessoren, insbesodere der Hardware-/Software-Schnittstelle
- Rechnerachitektur
- Betriebssyteme
- Softwaretechnik
- Compilerbau
Umfassende Kenntnisse in allen diesen Gebieten kann auch von Studenten im Hauptstudium kaum vorausgesetzt werden. Interesse, und damit auch die Bereitschaft sich bei Bedarf ausreichend einzuarbeiten, wird aber Voraussetzung für eine erfolgreiche Durchführung sein.
Halb so wild: In jedem Fall bietet das Seminar eine erstklassige Gelegenheit, die eigenen Kenntnisse in allen Bereichen deutlich zu Vertiefen. Und das soll natürlich auch Spaß machen -- so Don't panic. :).
Duchführung und verbindliche Termine
- Literaturbeschaffung: ab sofort bis mindestens 5 Wochen vor dem Vortragstermin
- Bei Problemen mit der Literaturbeschaffung sollte frühzeitig Rücksprache mit dem Betreuer erfolgen.
- Sortieren der Literatur: bis ca. 4 Wochen vor dem Vortragstermin
- Erstellen einer Grobgliederung: bis ca. 3 Wochen vor dem Vortragstermin. Spätestens dann erfolgt die erste Rücksprache mit dem Betreuer.
- Erstellen der Folien: bis mindestens eine Woche vor dem Vortragstermin. Die Folien müssen dem Betreuer vor dem Vortragstermin vorgelegt werden. Gerade hier ist Verspätung i.d.R. inakzeptabel.
- Abgabe der Ausarbeitung reicht bis zum Ende des Semesters.
Wie bei jedem Seminar, finden sich immer Gemeinsamkeiten und Berührungspunkte zwischen den einzelnen Vortragsthementhemen und -inhalten. Diese zu identifizieren ist nur teilweise Aufgabe der Betreuer. Verschafft euch regelmässig einen Überblick über den Entwicklunsstand anderer Teilnehmer und versucht euch abzusprechen, gemeinsame Arbeit sinnvoll aufteilen. In jedem Fall, konsultiert bitte die Betreuer und informiert sie über getroffene übereinfkünfte.
Ausarbeitung
Der Umfang der Ausarbeitung sollte 15 Seiten nicht unter- und 20 Seiten nicht überschreiten. Wer ein streßfreies System für den Satz sucht, dem sei LaTeX ans Herz gelegt. Gutes (nach westeuropäischen Gesichtspunkten) Seitenlayout bekommt man z.B. mit Komascript.
Für Durchsicht durch die Betreuer und die Ablage auf der Seminar-Homepage wird PDF oder PostScript benötigt. Die Speicherformate von Word oder OpenOffice sind für die Ausgabe im Rahmen des Seminars nicht akzeptabel, da nicht ausreichend standardisiert.
Vortrag
Kenntnisse in Vortragsentwicklung und -gestaltung, und Kennnisse im Einsatz geeigneter Software dazu, lassen sich beim Haupseminar eigentlich schon voraussetzen. Denjenigen, die trotzdem noch ein paar Tips und Anregungen suchen, sei ein Blick in die Seiten von z.B. Carsten Trinitis und Daniel Stodden ans Herz gelegt.
Literatur
James E. Smith and Ravi Nair, Virtual
Machines: Versatile Platforms for Systems and
Processes
, Morgan Kaufmann Publishers, San Francisco,
CA, USA, 2005, ISBN 1-55860-910-5
More to come...