Virtualisierung
Anwendung, Technologie und Forschung
Wiederverwendung unveränderter Gerätetreiber
Die Entwicklung von Gerätetreibern ist für moderne Geräte ein komplexes Problem. Daher liegt der Wunsch nahe, Treiber nicht für jedes Betriebssystem neu entwickeln zu müssen, und stattdessen die für ein spezielles Betriebssystem entwickelten Treiber mehr oder weniger unverändert in anderen Betriebssystemen weiterzuverwenden [8]. Die Virtualisierung erlaubt, dies mit einigen kleineren Erweiterungen zu bewerkstelligen.
Am folgenden Beispiel wird der Ansatz deutlich: Für ein Gerät existiert ein Treiber unter Windows. Unter Linux ist diese Entwicklung noch nicht erfolgt. Ziel ist nun, den Treiber auch unter Linux nutzen zu können. Dafür startet man eine dedizierte virtuelle Maschine unter Windows, die den Treiber lädt. Dann installiert man ein kleines Übersetzungsmodul, welches den lokalen Gerätetreiber unter Windows bedient und eine Schnittstelle nach außen bereitstellt. Unter Linux installiert man dann einen Standardtreiber, der die Geräteaufrufe an das Übersetzungsmodul in der Windows-VM weiterleitet. Somit kann das von Windows betriebene Gerät durch eine Übersetzungschnittstelle auch in Linux benutzt werden. Neben der Weiterverwendung von bestehenden Treibern bietet diese Technik den Vorteil, dass man Treiber, die abgestürzt sind, durch den Reboot der dedizierten »Treiber-VM« sicher wiederstarten kann. Auch bleiben die Linux-Gäste von diesem Absturz unbeschädigt, da sie nur mitbekommen, dass ein Verbindungs-Aufbau zum lokalen Netzwerk nicht möglich ist.
Kontrolle des Energieverbrauchs virtueller Maschinen
Virtualisierung bietet ganz allgemein die Möglichkeit, neue Zuordnungs-Algorithmen für Ressourcen umzusetzen, da der VMM gerade deren Verteilung kontrolliert. Dies gilt auch für die Zuweisung der wichtigsten Ressource eines Computers: der CPU. Die Idee, die hinter [ 9, 10] steht, ist, mittels eines neuen Scheduling-Algorithmus die Leistungsaufnahme des Prozessors softwareseitig zu kontrollieren. Argumentiert wird, dass klassische, auf ein Betriebssystem beschränkte Mechanismen (zum Beispiel dynamische Frequenzanpassung basierend auf der Auslastung des Prozessors) für die Lösung des Problems in Virtualisierungsumgebungen nicht mehr ausreichen. Wenn man VMs gleichzeitig laufen hat, so müssen diese sich auf eine Taktfrequenz einigen können, wenn z.B. eine VM im Zeitpunkt der Messung gerade nichts zu arbeiten hat und eine andere gerade mit pov-ray ein Bild rendert und somit stark unter Last steht.
Der neue Algorithmus sieht eine Budgetierung der Leistungsaufnahme vor. Zu diesem Zweck misst der Scheduler im VMM die Leistungsaufnahme der VMs, berechnet daraus neue Budgets und vergibt diese an die VMs. Diese wiederum halten diese Budgets, womit eine Kontrolle der Leistungsaufnahme des gesamten Systems möglich wird. Anwendung könnte solch ein Algorithmus auch in der Temperaturkontrolle des Systems finden. Eine Umsetzung der Prozessortemperatur auf Leistungsaufnahme ist ebenfalls bereits vorhanden. Eine weitere Möglichkeit des Systems ist die Migration vollständiger VMs zwischen verschiedenen CPUs in SMP-Systemen. Ein Ausbalancieren der Leistungsaufnahme (und somit auch der Temperatur des Prozessors) ist hiermit möglich.
Pre-Virtualisierung
Pre-Virtualisierung [11] nimmt sich der beiden Nachteile von vollständiger Virtualisierung und Para-Virtualisierung an. Man versucht das Problem des Leistungsverlustes auf der einen Seite und des hohen Entwicklungs-Aufwands zur Portierung auf der anderen Seite zu lösen. Zu diesem Zwecke hat man einen Compiler entwickelt, der vor dem eigentlichen Übersetzungsvorgang den Code der Betriebssystemkerne analysiert und mit Annotationen ergänzt. Diese Annotationen erlauben zur Laufzeit ein leichteres Erkennen der problematischen Codestellen, wodurch sich eine deutliche Reduktion des Leistungsverlustes einstellt. Ein weiterer Vorteil ist, dass man zum Anpassen auf verschiedene VMMs nur den Compiler anpassen muss. Zu guter Letzt können so virtualisierte Systemkerne weiterhin auf der Hardware direkt laufen.
Die Forschung im Bereich Virtualisierung ist momentan wahrlich umfangreich. Weitere Forschungsgebiete beschäftigen sich zum Beispiel mit Sicherheitsaspekten der Virtualisierung, mit der Migration ganzer VMs zwischen zwei physikalischen Rechnern oder dem Einfassen von Hardware-Virtualisierungslösungen (wie Pacifica) in Software-Lösungen.
Fazit
Virtualisierung ist in aller Munde und wird es wohl für die nächste Zeit bleiben (so lässt es zumindest der gewaltige Forschungsaufwand vermuten). Einen weiteren Schub könnte die Virtualisierung durch das kostenlose Produkt VMWare Server erfahren (es kann kostenlos auf der VMWare-Seite heruntergeladen werden und ist entgegen deren Spezifikation auch unter Windows XP SP2 funktionsfähig). Auch die Open-Source-Lösung Xen wird wohl zur weiteren Verbreitung beitragen. Novells SUSE Linux Enterprise Server 10 kommt bereits mit einem virtualisierten Linux-Kern mit Xen als VMM und bietet ein komfortables Konfigurations-Menü für selbigen. Andere Distributionen werden folgen, wenn die Integration einfacher wird. Ach ja, und wenn der Windows-Kern erst virtualisiert verfügbar ist...
Referenzen
[1] The L4Ka Team. L4ka virtualization project web page.
[2] R. J. Creasy, »The origin of the vm/370 time-sharing system«, IBM Journal of Research and Development.
[3] R. P. Goldberg, Architectural Principles for Virtual Computer Systems. Doktorarbeit.
[4] VMware. VMWare Workstation 5.5.
[5] Bochs. The Open Source IA-32 Emulation Project.
[6] Virtual PC. Virtual PC for MAC.
[7] A. Whitaker, M. Shaw, and S. Gribble. Denali: Lightweight virtual machines for distributed and networked applications.
[8] The L4Ka Team. Unmodified Device Driver Reuse.
[10] Marcus Reinhardt. Energy-Aware Scheduling of Virtual Machines in a Multiprocessor Environment. Diplom-Arbeit.
[11] The L4Ka Team. Pre-Virtualization.
[12] Lehrstuhl für System-Architektur. Universität Karlsruhe

