Ichlection von Korrektur von Thanksgknown
Es geht jetzt� Moin Moin! SYL HTHHHH
Was machen wir heute für heute?
Jetzt, Moin Moin!ielen! Reinspaziert!
W championship
Gibt's Fragen? Zu letzter Woche von letzter Woche12 zu den Aufgaben zu
Wünsche, Anregungen. Alle fleißig am basteln. Alle haben sich vorgenommen fleißig zu basteln.
Okay. Jo, dann soll es heute weitergehen mit Just-in-Time-Compiler-Geschichten. Einfach
mal ein bisschen sich zu überlegen, wie schaut das in der Praxis wirklich aus. Jo, also Fragen
habe da anscheinend nicht. Okay, dann frage ich was. Können wir mal brainstorming machen.
Diese eine Instruktion soll ausgeführt werden. Was muss dann jetzt der Reihe nachgemacht werden?
Jetzt mal erste Frage unabhängig, das ist ein Time Compiler oder nicht? Ich habe irgendeinen
Simulator, wie auch man da das macht. Was muss der alles tun?
Was muss er davor noch tun?
Ja, also Instruction point erholen, gucken ob der in Ordnung ist. Was muss er davor noch
tun?
Erster Punkt. Ja, mal gucken ob überhaupt Strom da ist, weil wenn kein Strom da ist,
dann macht er gar nichts. Okay, also wir haben Strom, was machen wir jetzt?
Instruction pointer, nein wir machen vorher noch was anderes.
Ja, bevor wir gucken ob Interrupts da sind, machen wir noch was anderes.
Ja, jetzt war mein Finger da hinten irgendwo, ich bin immer noch da. War alles richtig,
nur die Reihenfolge stimmt noch nicht.
Ja, also so muss ich jetzt zeigen, eins dazwischen fehlt noch. Also du warst ja dicht dran mit
dem was du gesagt hast.
Exception wäre das erste, also wenn wir dann, ne Entschuldigung, vor Exception haben wir
noch was anderes, ich habe mal was vergessen. Also jetzt Strom, Exception, Interrupt, dazwischen
haben wir noch eins.
Also deine Ahnung hat wie man das Ding ausmacht, ich hätte nichts dagegen. Also Haltzustand,
genau. Also erstmal gucken ob Strom da ist, wenn ja, gucken ob ich nicht vorher eine Haltinstruktion
ausgerufen habe, weil dann mache ich gar nichts, außer dass ich warte auf Interrupts.
Dann kommen die Exceptions. Ja, ich muss gucken ob ich im Haltzustand und kein Interrupt da
ist, dann breche ich ab. Wenn im Haltzustand aber Interrupt da ist, dann mache ich weiter.
Jo, Exceptions müssen vor den Interrupts abgearbeitet werden. Warum? Standardmäßig
schreibt die CPU den falschen Zustand in irgendeiner Form, also bei der Exception irgendwo hin,
also bei der Division durch Null muss sie den Instruction Pointer sichern oder bei Page
Fault muss sie sich vielleicht die Adresse merken wo sie dann falsch hingelangt hat.
Und damit der Exception Händler die Info auch wirklich kriegt, muss der sofort aufgerufen
werden, weil der Interrupt Händler natürlich eventuell den Instruction Pointer schon wieder
verändert. Strom, Halt oder nicht, mit Interrupt oder nicht, Exceptions, dann kommen die Interrupts,
wobei man die im Intel Fall noch unterteilen kann in Non-Maskable, Maskable, System Management
Interrupt und normaler Interrupt. Ok, das hängt jetzt von der CPU stark ab. Die meisten
CPUs kennen Interrupts und damit ist die Sache gegessen und die kann man ein- und ausschalten
wenn man will. Intel hat das noch aus vergangenen Jahren übernommen, dass es verschiedene Typen
gibt, die alle und wenn keiner anliegt oder es liegt ein Interrupt an, aber die Interrupts
sind Disabled, dann fällt der Punkt für den Tag. Ja und dann kommst du, jetzt holen wir
mal die Instruktion, die eigentliche. Da hattest du schon richtig gesagt, naja, so einfach
ist das auch nicht. Was heißt jetzt Code holen? Code holen heißt, wenn wir das mal genau
aufdröseln. Ja, jetzt bist du auch schon wieder dahinten in der Liste und ich bin auch ganz
woanders. Das erste Beid haben wir noch lange nicht. Ja, na gut, wie berechnet man die Adresse?
Das kommt jetzt müssen auch die CPU drauf an. Also was ich habe ist der Instruction
Presenters
Zugänglich über
Offener Zugang
Dauer
01:26:56 Min
Aufnahmedatum
2015-11-20
Hochgeladen am
2019-05-06 15:39: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