In Sport. Moin moin allerseits. Letzte Vorlesung in diesem wunderschönen Raum.
Worum soll es heute gehen? Einmal eine Zusammenfassung und ein kleiner Test von mir, ob ihr alles verstanden habt und was ihr verstanden habt.
Und ein paar Hinweise zu dem, was ihr verstanden haben solltet.
Das erste. Ich habe ohne Vollständigkeit mal zusammen geschrieben, was es an virtuellen Maschinen gibt.
Jetzt wird der ein oder andere vielleicht virtuell eine Maschine.
Ich kenne das nur als, wie ich male, bunte Buchstabenpaket kennen. Wer kann sagen, was V-Type eigentlich ist?
Zeichensätze malen. Es gibt einen Haufen Zeichensätze und die kann man sich rendern lassen.
Definitiv nicht. Die Zeichensätze sind so gemacht, dass man eine Handvoll Punkte hat.
Und letztendlich kann man dazwischen dann so Linien ziehen und dann kriegt man irgendwie einen Buchstaben.
Wenn man nur die Punkte an sich mal gesagt kriegt, kann man die skalieren auf beliebige Größe.
Und weil die auch Base-Blinds sind, dann sind sie auch schön rund.
Kann man sich schön skalieren. Geht von Mikro bis unendlich. Geschwindigkeit.
Kann man sich vorstellen, kann man eine Länge dann rumrechnen.
Was hat jetzt das aber mit virtuellen Maschinen zu tun?
Es wäre natürlich zu einfach, wenn das jetzt reine Vektorgrafik wäre.
Man hat da tatsächlich eine Formiersprache erfunden, die in diesem Durchschnitt beschreibt,
wie sich diese Schriften verhalten, die uns alle irgendwie skalierungsweise anfassen,
die Dinge wie Legaturen in der Ambition machen kann tatsächlich.
Dass man bestimmte Buchstaben zusammenzieht, damit es irgendwie besser aussieht und allmögen solche Sachen.
Und in irgendeiner Umgebung muss man halt diesen Code ausführen, der da steht.
Also Kurze Motivation, was für Programme es gibt.
Beispielsweise, wenn man das immer weiter kleiner macht, dann könnt ihr euch vorstellen,
dass irgendwann das Ding ein Pixel oder vielleicht sogar weniger als ein Pixel ist.
Dann aber noch weiter zusammenzuziehen, dann wird aus dem P irgendwie, dann ist es kein P mehr.
Als visualisierte Menschen ist ein P dann ein P, wenn es da drin noch mindestens ein weißes Pixel gibt.
Das kann man in einer Sprache programmieren, beschreiben.
Und da die Zeichensätze bestehen jetzt aus Pünktchen und dieser Beschreibung, wie dann zu skalieren ist,
das gleiche gilt auch für, wenn es wahrscheinlich ein Bold-Zeichensatz ist, dann werden in sich die Linien breiter.
Nur wenn sie hier breiter werden, dann ist das dann wieder auch weg.
Da muss man ein bisschen aufpassen. Das kann man alles beschreiben in einer Sprache.
Und das ist alles zusammen als Beschreibung in einem Font.
Und jetzt möchte ich den Font natürlich benutzen auf Intel, auf Spark, auf Mac OS, auf keine Ahnung was.
Dafür gibt es eine virtuelle Maschine, die diese Zeichensätze, diese Beschreibungen, diese Programme umsetzen kann,
dass das eben auch auf beliebigen Rechnern funktioniert.
Und ihr könnt euch vorstellen, das soll nicht irgendwie funktionieren, sondern das muss auch flott funktionieren.
Im Prinzip jedes Pixelchen muss man irgendwie umrechnen, wenn es dann Italic, wenn es dann Bold, wenn es dann skaliert,
wenn es dann, und jedes Pixelchen umrechnen, muss man schon was tun.
Eine Art Anwendung für virtuelle Maschinen.
Was ist das eigentlich für eine Maschine? Ich weiß, dass da Bytecode drin ist, aber was ist das für eine Sprache?
Es ist ja relativ kompakt, weil die Rechner-Transformationen da beschreiben, auch abhängig von der Stabilisierung.
Das muss irgendwie interessant sein.
Ich glaube, bei ProType ist es tatsächlich auch eine Static-Maschine.
Das will er jetzt auch nicht kilobyteweise code pro Zeichen haben, der explodiert mir ja.
Es ist nicht viel, man muss halt nur auf gewisse Eigenheiten aufpassen.
Das eine war das Beispiel, dass es eben nicht weg sein darf in der Mitte, was anderes ist, wenn ihr Pixel habt.
Wenn ich jetzt ein C ausdrücken will, dass ich da so ein Kleinkörper habe und da in der Mitte noch was übrig sein soll,
dann kann ich das nicht verlieren. Da habe ich schon eine ganze Menge Code geschrieben.
Das ist schon für den Zeug optimiert, aber das ist schon relativ lauter.
Was anderes, was er halt machen können soll, ist, wenn ihr jetzt irgendwie sowas habt und ihr habt hier drunterliegen,
sozusagen eure Pixel, dann ist das beispielsweise eine ungünstige Geschichte,
Presenters
Zugänglich über
Offener Zugang
Dauer
01:18:30 Min
Aufnahmedatum
2016-02-05
Hochgeladen am
2019-05-07 16:29: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
-
entwickeln selbst CPU-Emulationen
-
entwickeln selbst Geräte-Emulationen
-
verteilen Implementierungsaufgaben in ihrer Gruppe