13 - Virtuelle Maschinen [ID:10962]
50 von 648 angezeigt

Ein kleines Beispiel. Letzte Woche haben wir uns überlegt, wie man mit hardwarebasierter

Virtualisierung das Ganze ein bisschen beschleunigen kann. Sprich, wir bauen in die CPU so ein bisschen

Support ein, dass sie sich selbst berechnen, selbst nachmachen kann bzw. an den Stellen,

wo sie sich nicht nachmachen kann, dann halt sagt, jetzt weiß ich nicht weiter, exit, mach du mal.

Das waren diese VTX Erweiterungen. Es gibt ein Projekt QEMU, die das ausnutzen und entsprechend

für Linux ein PC simulieren. Was simuliert QEMU? Es gibt ein bisschen Unterschied zwischen QEMU und

KVM. Die sind zwar eng verbandelt, aber nicht identisch. Also QEMU Quick Emulation war mal

ein Projekt, die haben angefangen, letztendlich ein PC, so wie ihr es bisher gelernt habt, für

Befehl just in time komponiert nachzumachen. Das heißt, im Prinzip können die, also mit der Methode

her, 386er aufwärts alles nachmachen, wobei QEMU an der Stelle nicht konfigurierbar ist,

sondern nach dem Motto, ein AMD 64 ist hier abwärts kompatibel, also machen wir doch an sich

erstmal ein AMD 64 mit allen Pieperpohr nach. Wer dann irgendwelche alte i386 Software hat,

der kann es ja trotzdem drauf laufen lassen. Ein PC wird nachgemacht. Also ich kann jetzt nicht

mehrere PCs irgendwie gemeinsam konfigurieren. Ich kann allerdings natürlich das QEMU Programm

zwei mal, drei mal, vier mal starten, dann habe ich halt zwei, drei, vier PCs. Drinnen ist Wald und

Wiesen, PC Hardware. Ich sage mal so eine typische Ausstattung, Grafikkarte, eine Platte, CD-Laufwerk,

Floppy-Laufwerk, serielle parallelen Schnittstelle. Wenn ihr in irgendeinen PC Laden geht und sagt, ich

weiß nicht, was ich brauche, ich will ein PC, dann kriegt ihr so ein, so grob gerechnet.

Das ganze ist GPL bzw. die Teile sind auch LGPL, also man kann sie auch irgendwo noch nutzen und

einbauen. Gebastelt hat das ein Herr Fabrice Ballard aus Frankreich. Ich weiß nicht, kennt den

jemand? Ein schillernder Paradiesvogel der Informatik. Der hat überall seine Finger

drin, also auch die libffm-Pack, die kennt ihr vielleicht. Die Stammt hat auch er verbrochen.

Der hat schon mal gewonnen, irgendwie einen Preis für das kryptische Programm. Also der taucht in

der Informatik häufiger mal auf. Ja, so sieht ungefähr auch das QEMU unter der Haube aus.

Da könnte man auch einen Preis für die kryptische Software finden, glaube ich. Also wenn man da drin

was sucht, es ist gruselig verblüffend, dass das QEMU so gut funktioniert. Also wenn ich so

Software schreiben würde und zwei Tage später wieder reingucken würde, ich würde mein Code

selber nicht mehr verstehen. Also das war das ursprüngliche QEMU. Irgendwann gab es dann die

sich selbst simulierenden CPUs, die Hardware-Geschichten. Und was sie da gemacht haben, da haben irgendwelche

anderen Leute dann letztendlich QEMU hergenommen und so die typische moderne PC-Hardware rausgesägt

und andersrum hier die AMD 64 CPU rausgesägt und weggeschmissen und stattdessen wird jetzt die

VTX-Erweiterung genutzt und damit dann die CPU simuliert. Der Rest ist am sich gleich. Inzwischen

haben sie das auch irgendwie ein bisschen auf die Reihe gekriegt, dass jetzt QEMU-Entwicklung

und KVM-Entwicklung im Prinzip laufen die jetzt parallel. Also wer eine entsprechende CPU hat,

der kann das KVM nutzen. Wer keine entsprechende CPU hat, kann das QEMU nutzen. Äußerlich gesehen

identisch. Also ihr seht da keinen Unterschied. Moin, kommen sie doch noch alle. Jo Vorteil

von dem QEMU, auf jeden Fall das Ding ist flott. Also wer jetzt irgendwie das mal vergleicht mit

irgendwas anderem, was ich euch bisher verklickert habe, wie das funktioniert, deutlich schneller.

Also auch das QEMU selber, also die nicht hardwarebeschleunigte Variante, ist noch

deutlich schneller als V-Maschinen zum Beispiel. Und mit dem KVM-Modul natürlich dann noch mit

der echten CPU, naja, so wie ihr das letzte Mal mitgekriegt habt. Also was ums Rechnen geht,

Originalgeschwindigkeit, wenn es dann um I.O. geht und viele Interrupts und so, dann müssen wir uns

gleich nochmal angucken. Jo, diese VTX-Geschichten, ich habe es euch beim letzten Mal so am Rande

erwähnt, sind natürlich jetzt alles wieder privilegierte Befehle, weil privilegierte Befehle

kann ich das ins QEMU selber nicht einbauen. Also gibt es ein entsprechendes Linux-Könnel-Modul,

wobei das jetzt in dem Sinne auch nicht unbedingt ein Kernel-Modul ist, weil ja AMD und Intel und

wie sie alle heißen, das alle ein klein bisschen anders machen. Dementsprechend kann man jetzt

unterschiedliche Module laden oder unterschiedliche Teile von Modulen laden, entweder AMD 64 oder

je nachdem welche CPU man hat. Jo, das ganze läuft dann entsprechend auch auf den entsprechenden

VTX-Erweiterungen oder kann man natürlich auch sagen, wenn ich jetzt keine KVM-Hardware-Beschleunigung

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:30:24 Min

Aufnahmedatum

2012-12-06

Hochgeladen am

2019-05-05 10:39:04

Sprache

de-DE

Vorgestellt werden verschiedene Virtualisierungs-Ansätze:

  • Emulation

  • Just-In-Time-Compiler

  • Para-Virtualisierung

  • Bibliotheks-basierte Virtualisierung

  • OS-Virtualisierung

Lernziele und Kompetenzen:

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

  • untersuchen CPU-Emulationen

  • untersuchen Geräte-Emulationen

Einbetten
Wordpress FAU Plugin
iFrame
Teilen