Hardware-Anforderungen von Virtualisierungslösungen

Lesezeit
2 Minuten
Bis jetzt gelesen

Hardware-Anforderungen von Virtualisierungslösungen

16.01.2012 - 00:00
Veröffentlicht in:

Seit einigen Jahren liefern sich die Großen unter den CPU-Herstellern – AMD und Intel – eine Entwicklungsschlacht bei Virtualisierungsfunktionen. Die Prozessoren der beiden Hersteller erhalten neue Funktionen und Befehle, die Virtualisierung erst ermöglichen oder zum Teil dramatisch beschleunigen sollen. Der folgende Artikel soll eine Einführung in die von Intel und AMD aktuell entwickelten Prozessor-Technologien geben und konzeptionell erklären.

Ein gewisses technisches Verständnis dieser Prozessor-Funktionen kann als Entscheidungshilfe unabdingbar sein – vor allem dann, wenn fortschrittliche Funktionen oder sehr hohe Performance der virtuellen Maschinen im Vordergrund stehen. All diese Funktionen dienen vornehmlich der Beschleunigung hardwaregestützter Virtualisierung. Für Resource Container wie OpenVZ sind sie dagegen irrelevant. Die meisten Virtualisierungslösungen wie Microsofts Hyper-V, VMware ESX, Citrix Xen und Linux KVM machen jedoch Gebrauch davon oder arbeiten intensiv an der Unterstützung der neuesten Features. Auch wenn die Erklärungen Unix- beziehungsweise Linux-lastig erscheinen, gilt das Gesagte prinzipiell auch für Windows.

Betriebssystem-Grundlagen
Vornehmliche Aufgabe eines Betriebssystems ist es, die zugrundeliegende Hardware des Systems für Anwendungen bereitzustellen. Anstatt aufwendig die Hardware zu programmieren, sorgt eine Schnittstelle des Betriebssystems dafür, das Anwendungen bequem Daten lesen und schreiben können, oder etwa Ein- und Ausgaben via Tastatur und Bildschirm zu verarbeiten. Mit Aufkommen des Multiprocessings – also der heute gängigen Fähigkeit, mehrere Anwendungen scheinbar gleichzeitig auf einem System laufen zu lassen – wurde es unabdingbar, dass die Anwendungen möglichst sorgsam voneinander abgeschottet werden. Eine Anwendung, die abstürzt, darf andere laufende Anwendungen nicht beeinträchtigen, geschweige denn das gesamte System zum Absturz bringen.

Zudem entwickelte sich parallel zum Multiprocessing der Multiuserbetrieb, indem sich neben Anwendungen auch reale Benutzer ein System teilen - das Sicherheitsproblem war damit geboren. Tief im Inneren benutzt der Betriebssystemkern seinerseits Schnittstellen und Funktionen der Hardware, etwa die zur Speicherverwaltung, Ein-/Ausgabeoperationen auf angeschlossene Geräte oder auftretende Ereignisse.

Ein weit verbreiteter Irrglaube ist, dass das Betriebssystem wie ein normales Programm mit ein paar Privilegien auf einem System läuft. Tatsächlich läuft ein Betriebssystem im eigentlichen Sinne gar nicht. Vielmehr präsentiert sich das Betriebssystem als Code, der verschiedene Funktionen implementiert, samt Datenstrukturen im Hauptspeicher und der stets von außen aufgerufen wird, um privilegierte Abläufe durchzuführen.

Benötigt eine Anwendung mehr Speicher, ruft sie über die Systemschnittstelle entsprechende Routinen im Betriebssystem auf, die den Speicher bereitstellen und gleichzeitig dafür sorgen, dass der Speicher anderen Anwendungen nicht mehr zur Verfügung steht. Externe Ereignisse, wie etwa Datenempfang an der Netzwerkschnittstelle, lösen Unterbrechungen (Interrupts) des normalen Programmablaufs aus, auf die spezielle Routinen im Betriebssystem möglichst schnell und kurz reagieren. Anschließend wird an der Stelle fortgefahren, an der die Unterbrechung auftrat.

Trennwand im System
Um Anwendungen (und Anwender) voneinander effektiv isoliert laufen zu lassen, sind zwei Voraussetzungen unabdingbar: Das Betriebssystem braucht die vollständige und alleinige Kontrolle des Systems und das Betriebssystem darf nicht beliebig von Anwendungen aufgerufen oder modifiziert werden können – es sei denn mittels wohl definierter Schnittstellen und nur mit ausreichenden Rechten.

Um das Betriebssystem von Anwendungen mittels Hardwareunterstützung zu isolieren, wurden in x86-Prozessoren seit Mitte der 1980er Jahre mit dem 80386 zwei wichtige Funktionen eingeführt: sogenannte "Privilege Level" und eine Speicherverwaltungseinheit in der CPU, genannt "Memory Management Unit" oder kurz MMU.

Privilege Level sorgen dafür, dass bestimmte von der CPU ausgehende Instruktionen nur in einem besonderen Modus ausgeführt werden. Funktionen zur Behandlung von Interrupts oder das Ansprechen bestimmter Speicherbereiche, wie etwa den I/O-Bereich von Geräten, sollten tunlichst nicht von Anwenderprogrammen vorgenommen werden, sondern ausschließlich vom Kernel.

Die MMU unterteilt den physikalischen Speicher in eine Art Häppchen (Pages). Anwenderprogramme erwarten stets einen zusammenhängenden Speicher, der ab einer festen Adresse, meist 0, beginnt. Die MMU sorgt für die Übersetzung der physikalischen Adressen in virtuelle, um den Anwendungen diesen einheitlichen Speicher aus den Pages zusammenzusetzen. Die Funktionen der MMU sind ebenfalls nur in einem hohen Privilege Level verfügbar, damit nur die Speicherverwaltungsfunktionen des Betriebssystems darauf zugreifen können.



                                                Seite 1 von 3                     Nächste Seite>>






Thomas Weyergraf/dr/ln
 

Ähnliche Beiträge

Azure mit lokalen Netzen verbinden (3)

Azure bietet vielfältige Möglichkeiten, um Ressourcen in der Cloud mit lokalen Netzwerken zu verbinden. Dazu gehören auch Sicherheitsmechanismen und Loadbalancer, die den Datenverkehr zwischen Cloud und lokalem Rechenzentrum nicht nur zur Verfügung stellen, sondern absichern und hochverfügbar konfigurieren. IT-Administrator zeigt die Wege auf, um die Cloudumgebung mit dem lokalen Netzwerk zu verbinden. Im dritten und letzten Teil der Workshopserie zeigen wir, wie Sie virtuelle Firewalls hochziehen.

Azure mit lokalen Netzen verbinden (2)

Azure bietet vielfältige Möglichkeiten, um Ressourcen in der Cloud mit lokalen Netzwerken zu verbinden. Dazu gehören auch Sicherheitsmechanismen und Loadbalancer, die den Datenverkehr zwischen Cloud und lokalem Rechenzentrum nicht nur zur Verfügung stellen, sondern absichern und hochverfügbar konfigurieren. IT-Administrator zeigt die Wege auf, um die Cloudumgebung mit dem lokalen Netzwerk zu verbinden. Im zweiten Teil binden wir den Connection Broker an und erklären, was es mit dem Cloud Witness auf sich hat.

Azure mit lokalen Netzen verbinden (1)

Azure bietet vielfältige Möglichkeiten, um Ressourcen in der Cloud mit lokalen Netzwerken zu verbinden. Dazu gehören auch Sicherheitsmechanismen und Loadbalancer, die den Datenverkehr zwischen Cloud und lokalem Rechenzentrum nicht nur zur Verfügung stellen, sondern absichern und hochverfügbar konfigurieren. IT-Administrator zeigt die Wege auf, um die Cloudumgebung mit dem lokalen Netzwerk zu verbinden. Im ersten Teil der Workshopserie schildern wir das Prinzip virtueller Netzwerke.