cede?
Die Technik läuft. Guten Morgen allerseits. Gibt es Fragen? Ich habe mal wieder meine obligatorische
Frage. Wann kriege ich die letzten Abgaben? Die, die noch was abgeben wollen, sind nämlich da.
Kann man mal hoffen, dass sie gerade am Schrauben sind. Ja, gut, dann machen wir hier weiter.
Letzten, was war es? Freitag haben wir uns angeguckt. Hardware-basierte Virtualisierung. Also von der
Idee her, wir nehmen uns eine echte CPU und lassen die echte CPU das machen, was wir eigentlich machen
wollen. Nur alles, was irgendwie kritisch ist, kritisch im Sinne von, könnte die Nachbar
virtuelle Maschine beeinträchtigen, könnte das echte Betriebssystem beeinträchtigen,
irgendwas in der Art, das wollen wir ausfiltern. Ausfiltern haben wir gesagt, dann nehmen wir dann
eine zum Beispiel Intel bzw. AMD Thunderpool Pacifica Erweiterung. Dann kriegen wir sozusagen
Trepps in dem Moment, wo etwas Schiefes passieren könnte. Das letzte, was wir uns angeguckt haben,
war diese Folie, dass wir gesagt haben, wir kriegen jedes Mal einen Trepp- oder Exit-Event in dem Moment,
wo ein In- oder Out-Event kommt. Das muss ja auch. In- und Out-Echt machen dürfen wir nicht, sonst
können wir echt von der Platte was lesen, dann zerstören wir die Sicherheit von dem normalen
Betriebssystem. Was machen wir? Wir simulieren In- und Out. Leider könnt ihr euch natürlich vorstellen,
das haben wir uns schon angeguckt, hier so mit In- und Out, sag mal mal, Plattenblöcke zu schreiben,
heißt ganz viel In- und ganz viel Out. Beim modernen Gerät sieht es ein bisschen besser aus,
da landen die ganzen Daten eigentlich immer im Wesentlichen im Speicher und werden halt mit
DMR verschickt oder gelesen. Also Extended IDE oder typische EEPRO100-kompatible Karten,
die machen das so. Letzter Punkt, wo wir dann stehen geblieben waren, wir machen das mit Grafik.
Eine Idee war schon, alle Grafikkarten, die wir so kennen, sind blöd. Jedes Pixel, was wir
einfärben wollen, ist eine Move Instruktion in den entsprechenden Speicher. Gibt einen Trepp,
können wir abfangen, das Pixel können wir woanders setzen, ist okay, nur zeitlich nicht okay. Ein
typischer Bildschirm, 1024 x 768 oder so, das sind ja schon fast zwei Millionen, fast eine
Million Pixelchen, eine Million Trepps, vergiss das, wir haben es mal laufen lassen, als es so aufkam,
das war so richtig, da konnte man gucken, wie so langsam die Pixelchen auf dem Bildschirm
erschienen sind, also konnte jeder einzelne mitzählen, keine Chance, das funktioniert nicht.
Ja, da müssen wir mal ein bisschen drüber nachszenieren, was kann man jetzt tun? Eine
Idee war, wir machen einfach eine völlig neue Grafikkarte, wir definieren uns einfach selber
was, muss ja nichts sein, was in echt existiert, Hauptsache wir haben einen Treiber dafür. So
macht VM mehr das, beziehungsweise andere Firmen und andere virtuell Maschinen Programmierer haben
das gleiche oder sowas, nachgemacht. Kann man sich vorstellen, das ist so in etwa der Schritt hier,
ich probiere nicht mehr jedes einzelne Pixel auf dem Bildschirm, sondern so wie hier, ich gebe
ganze Speicherbereiche an, ob das jetzt Kommandos sind oder ob das Pixelmengen sind, dass ich einfach
sage, hier ist zum Beispiel eine Icon, mal mal dahin und dann haben wir einmal einen Trepp für das
Fang an, aber dann können wir so ein ganzes Icon, Pixel, Pixel, Pixel, ganz viele Pixel am Stück setzen.
Ja, aber das geht natürlich nur mit spezieller Hardware, die wir uns selbst designed haben.
Andere Ideen, das kann man natürlich sagen, wieso fragst du jetzt nach anderen Ideen,
brauchen wir doch keine anderen Ideen, das ist doch eine perfekte Idee.
Es gibt noch die, die mindestens zwei Leute hier in der Uni schon mal gemacht haben, nämlich man kann, wenn man jetzt noch moderne Prozess noch hat, sich einfach eine Grafikkarte in die virtuellen Maschinen durchmelden und der virtuellen Maschine einfach tatsächlich eine vollständige musikalische Grafikkarte geben.
Ich habe gerade bei einem modernen Rechner je eine integrierte Grafik und dann noch eine zusätzliche reingesteckt, kann man das durchaus machen.
Da ist auch ein Problem, dass man plötzlich gar kein Bildschirm und Notsystem mehr hat, nicht so groß.
Okay, also die Idee kann man jetzt mit dem modernen, wenn eh schon eine Grafikkarte eingebaut ist, man steckt noch eine zweite rein.
Von der Idee her, gleiche Idee geht natürlich auch, man kann natürlich auch zwei normale Grafikkarten reinstecken.
Okay, geht nicht bei jedem Rechner, aber von der Idee her.
Man kann sogar die einzige Grafikkarte gerne mapfen, aber dann ist das nie mal etwas, was ich Ihnen sagen kann.
Mindestens das.
Na gut, es gibt auch modernere, da kann man irgendwie so bestimmte Ausschnitte aus dem Bildschirm irgendwo woanders herholen und dann kann man sich den Bereich dann irgendwie speziell mappen.
So man hat, kann man es nutzen, aber die meisten Leute haben sowas nicht.
Ja, was machen wir dann?
Presenters
Zugänglich über
Offener Zugang
Dauer
01:28:58 Min
Aufnahmedatum
2015-12-09
Hochgeladen am
2019-05-07 09:49:03
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
-
entwickeln selbst CPU-Emulationen
-
entwickeln selbst Geräte-Emulationen
-
verteilen Implementierungsaufgaben in ihrer Gruppe