Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Einleitung
1 Was ist Ubuntu?
2 Die Versionen im Detail
3 Die Shell
4 Migration und Synchronisation
5 Die Installation
6 Erste Schritte
7 Ubuntu mobil
8 Derivate
9 Internet und E-Mail
10 Office
11 Grafik und Bildbearbeitung
12 Multimedia und Spiele
13 Programmierung und Design
14 Hardware-Konfiguration
15 Software- und Paketverwaltung
16 Architektur
17 Backup und Sicherheit
18 Server-Installation
19 Datei- und FTP-Server
20 Weitere Server-Dienste
21 Kontrolle und Monitoring
22 Desktop-Virtualisierung
23 Server-Virtualisierung mit KVM
24 Server-Virtualisierung mit Xen
25 Hilfe
26 Befehlsreferenz Ubuntu Linux
A Übersicht: Software für (K)Ubuntu
B Mark Shuttleworth
C Glossar
D Häufig gestellte Fragen
Stichwort

Download:
- ZIP, ca. 36,6 MB
Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Ubuntu GNU/Linux von Marcus Fischer
Das umfassende Handbuch, aktuell zu Ubuntu 9.04 - Jaunty Jackalope
Buch: Ubuntu GNU/Linux

Ubuntu GNU/Linux
4., aktualisierte und erweiterte Auflage, geb.
1.120 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1439-1
Pfeil 22 Desktop-Virtualisierung
Pfeil 22.1 Überblick
Pfeil 22.2 Konzepte
Pfeil 22.2.1 Paravirtualisierung
Pfeil 22.2.2 Hardware-unterstützte Virtualisierung
Pfeil 22.3 Die Ringe
Pfeil 22.3.1 Grundsätzlicher Aufbau
Pfeil 22.3.2 Generelles Problem bei der x86-Virtualisierung
Pfeil 22.3.3 Möglichkeiten der x86-Virtualisierung
Pfeil 22.3.4 Machtmissbrauch
Pfeil 22.3.5 Ungenutzte Ringe
Pfeil 22.4 Intel VT-x und AMD-V
Pfeil 22.4.1 Welche Prozessoren bieten diese Technik?
Pfeil 22.4.2 Gründe für Performance-Probleme
Pfeil 22.4.3 Pacifica und Vanderpool sind inkompatibel
Pfeil 22.5 Allgemeines
Pfeil 22.6 VirtualBox
Pfeil 22.6.1 Installation
Pfeil 22.6.2 USB-Einrichtung
Pfeil 22.7 VMware Player
Pfeil 22.7.1 Installation unter Windows
Pfeil 22.7.2 Installation unter Linux
Pfeil 22.7.3 Nutzung der virtuellen Maschine
Pfeil 22.7.4 Tipps für Windows-Anwender
Pfeil 22.8 VMware Workstation
Pfeil 22.8.1 Voraussetzungen
Pfeil 22.8.2 Installation
Pfeil 22.9 VMware Server
Pfeil 22.9.1 VMware Server 1.x
Pfeil 22.9.2 VMware Server 2.x
Pfeil 22.10 VMware Tools
Pfeil 22.10.1 Installation der VMware Tools
Pfeil 22.10.2 Konfiguration
Pfeil 22.11 QEMU
Pfeil 22.11.1 Installation
Pfeil 22.11.2 Start des Gastsystems
Pfeil 22.11.3 Tastenkombinationen


Galileo Computing - Zum Seitenanfang

22.3 Die Ringe Zur nächsten ÜberschriftZur vorigen Überschrift

Den Segmenten des Hauptspeichers kann jeweils ein Privilegien-Level zugeordnet werden. Um sich diese Segmentierung und Aufteilung in vier Level besser vorstellen zu können, entwickelte man die Vorstellung von Ringen.


Galileo Computing - Zum Seitenanfang

22.3.1 Grundsätzlicher Aufbau Zur nächsten ÜberschriftZur vorigen Überschrift

Jeder Prozess kann immer nur in einem einzelnen Ring ausgeführt werden. Dabei ist ihm nicht erlaubt, aus diesem Ring auszubrechen. Die Ringe werden dadurch unterschieden, dass jeder Ring dem in ihm laufenden Prozess nur einen Teil des CPU-Befehlssatzes zur Verfügung stellt.

Abbildung 22.3 Ringmodell – Ring 0 ist der Supervisor-Mode und stellt den uneingeschränkten Zugriff auf den Befehlssatz der CPU dar. Je höher die Ringnummer ist, desto eingeschränkter ist der Zugriff.

Prozessoren der x86-Architektur stellen vier solcher Ringe zur Verfügung. Diese werden von 0 bis 3 nummeriert. Hierbei stelllt der Ring 0 den uneingeschränkten Zugriff auf die CPU dar (Supervisor-Mode) und Ring 3 den Level mit der größten Einschränkung (siehe Abbildung).

  • Ring 0 ist üblicherweise die Heimat des Kernels und bildet daher auch den sogenannten Kernel-Space. Man nennt diesen Ring auch Supervisor-Mode.
  • In Ring 3 hingegen laufen die Anwendungen, deshalb bildet Ring 3 den sogenannten Userspace.

Nun stellt sich die Frage, welche Prozesse in den Ringen 1 und 2 ihr virtuelles Zuhause finden. Die Antwort ist einfach: keine. Der Grund ist, dass andere aktuelle Prozessorarchitekturen nur zwei Ringe unterscheiden. Um Anwendungen leichter portieren zu können, entschied man sich dafür, zwei der ursprünglich vier Ringe nicht zu nutzen[Eine Ausnahme stellt hier OS / 2 dar.].


Galileo Computing - Zum Seitenanfang

22.3.2 Generelles Problem bei der x86-Virtualisierung Zur nächsten ÜberschriftZur vorigen Überschrift

Soll ein Hypervisor ein Betriebssystem kontrollieren, das standardmäßig in Ring 0 läuft, ergibt sich ein generelles Problem: Um das Betriebssystem kontrollieren zu können, muss der Hypervisor selbstverständlich in einem Ring laufen, der mehr Rechte besitzt als das Betriebssystem. Das Betriebssystem wiederum ist so konzipiert, dass es auf Ring 0 laufen muss (manche Instruktionen des Betriebssystems erfordern dies).

Und genau in diesem Zwiespalt liegt das Problem, warum ein x86-Prozessor ohne spezielle Virtualisierungsunterstützung, nicht effektiv virtualisiert werden kann: Das Betriebssystem läuft bei der Virtualisierung in der Regel auf Ebene 3, und deshalb gibt es Befehle, bei denen es zu Problemen kommt. Probleme heißt in diesem Fall, dass sich ein Befehl je nach Ring, in dem er ausgeführt wird, unterschiedlich verhält. Ich komme auf diese Probleme in Abschnitt auf Seite noch einmal zurück.


Galileo Computing - Zum Seitenanfang

22.3.3 Möglichkeiten der x86-Virtualisierung Zur nächsten ÜberschriftZur vorigen Überschrift

Auch wenn die x86-Architektur alles andere als optimal für Virtualisierungszwecke ist, wurde aufgrund ihrer hohen Verbreitung sehr viel Arbeit in die Entwicklung von x86-Virtualisierung investiert. Diese Arbeit trug im Laufe der Zeit ihre Früchte. Es folgt eine kurze Übersicht über die dabei verwendeten Techniken und Vorgehensweisen:

1. Emulation Jedes Stück Hardware wird von der Software simuliert. Dies ermöglicht zwar eine saubere Virtualisierung und eine große Zahl von unterstützten Hardware-Komponenten, erfordert allerdings viel Rechenleistung bei der Ausführung und einen hohen Implementierungsaufwand, da für jedes Stück Hardware ein Simulator und die Abbildung auf die reale Hardware geschrieben werden muss (von Fehlern im Simulator und davon ausgehenden Sicherheitsrisiken ganz zu schweigen).
2. Paravirtualisierung Hierbei wird Betriebssystemen durch den Hypervisor eine Software-Schnittstelle bereitgestellt, die ähnlich zur, aber nicht identisch mit der Hardware-Schnittstelle ist. Konkret heißt das, dass der Hypervisor auf Ebene 0 läuft und das Betriebssystem so angepasst wird, dass es ohne Probleme auf Ebene 1 oder 3 laufen kann.
3. Dadurch kann der Hypervisor schlanker sein, und es ergibt sich eine höhere Performance (es muss beispielsweise bei einem portierten Betriebssystem nicht für jede Instruktion geprüft werden, ob sie eine Aktion durchführen möchte, die nur auf Ring 0 erfolgreich sein kann). Allerdings ist das Anpassen des Betriebssystems aufwendig und bei proprietären Betriebssystemen ohne offenen Quellcode schlicht unmöglich.
4. Binary translation Die aufwendigste Art der Virtualisierung ist die Binary TranslationBinary translation. Hierbei überprüft der Hypervisor für jede Instruktion des Betriebssystems, ob sie die Virtualisierung beeinflusst oder ob Probleme bezüglich der Rechte auftreten. Ist dies der Fall, so ersetzt der Hypervisor diese Instruktion durch eine Folge anderer Instruktionen. Dass dies einen sehr hohen Verwaltungsaufwand mit sich bringt, ist offensichtlich.

Galileo Computing - Zum Seitenanfang

22.3.4 Machtmissbrauch Zur nächsten ÜberschriftZur vorigen Überschrift

Wenn ein Prozess in einem wenig privilegierten Ring eine Operation ausführt, zu der ihm die nötigen Privilegien fehlen, wird von der CPU eine sogenannte Exception erzeugt. Diese Exception wird im Normalfall an einen privilegierteren Ring weitergegeben. Routinen zur Behandlung dieser Exceptions können den privilegierten Befehl emulieren. Um dies aber effizient zu bewerkstelligen, sind jetzt erheblich mehr Instruktionen erforderlich. Dieser Umgang mit Exceptions verlangsamt zwangsläufig das System. Misslingt er, kommt es zu einem General Protection Fault. Als Folge davon stürzt der initiierende Prozess ab. Wenn der Initiator der Kernel selbst ist, stürzt das gesamte System ab.

Exceptions

Die wichtigste Voraussetzung für das Funktionieren dieses Ansatzes ist also, dass der Prozessor bei jeder unberechtigt durchgeführten privilegierten Anweisung eine Exception auslöst. Allerdings sind die x86-Prozessoren nicht ganz so gründlich bei den Exceptions. Beispielsweise werden Speicherzugriffe beim x86 über eine GDT (Global Descriptor Table) abgewickelt. Diese GDT ist eine globale Ressource und wird vom Betriebssystem verwaltet. Eigentlich müsste jeder direkte Zugriff auf diese Ressource als privilegierte Handlung angesehen werden und dürfte dementsprechend im User Mode nicht erlaubt sein. Der x86 behandelt die LGDT-Anweisung (Load Global Descriptor Table) auch als privilegiert. Allerdings führt SGDT (Store Global Descriptor Table) nicht zu einer Schutzverletzung.

Allein diese Inkonsistenz verhindert es, die GDT zu virtualisieren. Intels Virtualization Technology greift hier ein und erleichtert unter anderem auch das Exceptions-Handling. VM-Software mit Virtualization-Technology-Support lässt sich somit einfacher programmieren und bietet gleichzeitig eine höhere Betriebssicherheit und Stabilität.


Galileo Computing - Zum Seitenanfang

22.3.5 Ungenutzte Ringe topZur vorigen Überschrift

In nicht virtualisierten Systemen laufen sowohl der Kernel als auch sämtliche Hardware-Treiber in Ring 0, während die Anwendungen in Ring 3 arbeiten. Ring 1 und 2 bleiben ungenutzt, und genau dies machen sich manche Voll-Virtualisierungslösungen wie beispielsweise VMware zunutze: Die Gäste werden in einem nicht genutzten Ring ausgeführt.

Kommt es hierbei zu Exceptions, werden diese vom VMM in Ring 0 und nicht vom Gast ausgeführt. Xen arbeitet nach dem gleichen Prinzip und setzt den Hypervisor in Ring 0. Abbildung soll diese Wirkungsweise veranschaulichen.

Hypercalls

Hypercalls sind die Befehle, um die Xen den Befehlssatz der x86-Architektur erweitert hat. Sie entsprechen in ihrer Funktionsweise den UNIX-System-Calls.

  • Wenn ein Prozess im Userspace eine privilegierte Operation ausführen möchte, ruft er einen UNIX-System-Call auf.
  • Ebenso wird ein Hypercall aufgerufen, wenn ein Gastsystem eine privilegierte Operation ausführen möchte.

Der Kernel wandert gleichzeitig von Ring 0 in einen weniger privilegierten Ring. Je nach Architektur des zugrunde liegenden Systems kann dies Ring 1 oder 3 sein.

Abbildung 22.4 Nutzung der Ringe durch Xen, hier dargestellt an einer 32-Bit-CPU



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Ubuntu GNU/Linux





Ubuntu GNU/Linux
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Linux






 Linux


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: Webserver einrichten und administrieren






 Webserver einrichten
 und administrieren


Zum Katalog: Xen






 Xen


Zum Katalog: VirtualBox






 VirtualBox


Zum Katalog: LPIC-1






 LPIC-1


Zum Katalog: Einstieg in Ubuntu 8.10 »Intrepid Ibex«





 Einstieg in Ubuntu
 8.10 »Intrepid Ibex«


Zum Katalog: Einstieg in Ubuntu Linux - Videotraining





 Einstieg in Ubuntu
 Linux - Videotraining


Zum Katalog: Debian GNU/Linux






 Debian GNU/Linux


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de