Vorgestellt werden verschiedene Virtualisierungs-Ansätze:
Emulation
Just-In-Time-Compiler
Para-Virtualisierung
Bibliotheks-basierte Virtualisierung
OS-Virtualisierung
Studierende, die das Modul erfolgreich abgeschlossen haben:
erläutern verschiedene Motivationen für den Einsatz von VMs
unterscheiden verschiedene VMs
klassifizieren verschiedene Ziele unterschiedlicher VMs (z.B. Performance, Konfigurierbarkeit, Genauigkeit, ...)
hinterfragen verschiedene Simulationansätze für MMUs
erstellen virtuelle Komponenten und Busse
strukturieren Callbacks und entsprechendes Forwarding und Caching
unterscheiden zwischen Architektur, Chip und Komponente
klassifizieren unterschiedliche Just-In-Time-Compiler-Ansätze
erzeugen JIT Code aus vorgefertigten Code-Teilen
bewerten unterschiedliche JIT-Code-Optimierungen
erläutern Probleme bei der JIT-Code-Invalidierung
nennen JIT Probleme mit Exceptions/Interrupts sowie berechnete Sprüngen und Return-Instruktionen
unterscheiden verschiedene JIT Cache-Verwaltungen
beschreiben Möglichkeiten der Fehlerinjektion durch VMs
entwickeln ein an JIT angepasstes virtuelles "Hardware"-Design
erläutern die Java-VM Instruktionssatz-Architektur
nutzen Hardware-basierte Virtualisierung
entwickeln Verfahren zum Ausfiltern bestimmter Befehle
erläutern Probleme der Speicherverwaltung bei HW-basierter Virtualisierung
nutzen User-Mode-Emulation zur Paravirtualisierung
diskutieren Möglichkeiten von Debuggern für die Umleitung von System-Calls und die Ausfilterung von Befehlen
nutzen einen Hypervisor zur Paravirtualisierung
unterscheiden verschiedene Ansätze zur Geräteverwaltung in paravirtualisierten Systemen
erläutern Betriebssystem-basierte Virtualisierung
entwickeln unterschiedliche Bibliotheks-basierte Virtualisierungen
erläutern Probleme beim Speicher-Layout bei Bibliotheks-basierte Virtualisierung
konzipieren Personalities für Bibliotheks-basierte Virtualisierungen
beurteilen Probleme bei der korrekten Zeit-Simulation
nennen Ideen für die dynamische Anpassung der Zeit-Simulation
klassifizieren bekannte VMs (z.B. VICE, FAUmachine, QEMU, Bochs, JVM, KVM, User-Mode-Linux, Xen, VServer, Wine)
diskutieren in der Gruppe Vor- und Nachteile von bestimmten VM-Ansätzen
entwickeln selbst CPU-Emulationen
entwickeln selbst Geräte-Emulationen
verteilen Implementierungsaufgaben in ihrer Gruppe