clubs
Timing. Just in time. Genau. Vielleicht sollte ich einen NTP auf meiner Uhr schrauben.
Wenn man nicht auf dem O2 hört, die es heute, gestern Abend schon geschafft haben, um 10 Minuten falsche Zeitdingleit zu senden.
Wenn du das GPS machst, kann das auch passieren. Ja, Uhrzeitdienste sind jedes Problem.
Jo, okay, machen wir los. Gibt's Fragen?
Frage von mir. Wann kriege ich die nächsten Lösungen?
Welche Aufnahme ist es?
Das ist eine gute Frage. Bei manchen würde ich noch ganz gerne die erste richtig haben, bei manchen hätte ich gerne die zweite so langsam mal.
Okay, die dritte ist zwar noch nicht die Deadline, aber Schaden tut es nichts, wenn man sie abgibt. Logisch.
Dann seid ihr die ersten. Noch habe ich keine dritte.
Jo, fühlt euch mal wieder so ein bisschen angeschubst. Ihr kennt das.
Jo, okay, worum geht's heute?
Letztendlich Fortsetzung von dem, was wir mitmachen angefangen haben. Zeit kurz zum Wiederreinkommen ins Thema.
Ich hatte drei Folien. Das war die erste Folie mit einer Grafik im Sinne von wir wollen versuchen, dass die virtuelle Zeit leicht der echten Zeit ist.
Ihr erinnert euch, wäre ganz meckisch, dann können so virtuelle Maschinen mit echten Benutzern und echten Maschinen gut kooperieren.
Haben wir allerdings auch schon gesehen, wenn es dann Bereiche gibt, wo unsere Maschine, unsere virtuelle Maschine mal weggeskelt wird, ist, dann haben wir in der virtuellen Zeit schlicht eine Lücke.
Und solche Lücken, die sind beispielsweise von Viren natürlich detektierbar, was dann schon mal einem Virus oder in einem Honeypot oder so einem Drujana die Chance gibt, rauszukriegen, dass er wohl virtualisiert läuft.
Aber natürlich auch sonst, was ich in der Zeit hätte in echt eigentlich, sagen wir mal, Timeouts passieren sollen von irgendwelchen Protokollen, die kommen dann nicht.
Oder Tics von der Uhr, die kommen dann nicht bzw. sie kommen dann, wenn die virtuelle Maschine wieder losläuft, plötzlich im Brasselfeuer, alle miteinander auf einmal.
Haben wir gesehen, ist unter Umständen nicht dolle.
Dann haben wir uns das andere angeguckt und haben gesagt, naja, dann machen wir die virtuelle Zeit einfach nach Simulationsfortschritt.
Was schert uns die echte Umwelt? Die brauchen wir nicht. In vielen Fällen brauchen wir sie auch wirklich nicht.
Wir können ja beispielsweise auch einen virtuellen Benutzer an die virtuelle Maschine setzen, verkabeln über ein virtuelles Internetkabel mit einer virtuellen anderen Maschine.
Dann sehen die miteinander alle die gleiche Zeit. Dann ist uns das eigentlich wurscht, wie die Zeit eigentlich läuft.
Sollte es halt nach Mond gehen, solange die miteinander verkoppelten Teile man alle die gleiche Zeit sehen, ist das den Teilen dann ja wurscht.
Zum Debuggen, zum Testen von irgendwelchen Linux-Distributionen oder so. Wenn die man in sich konsistent Zeiten sehen, ist das in Ordnung.
Wie sieht dann so eine Grafik aus? Dann haben wir halt die reale Zeit, die schön da läuft. Aber die virtuelle Zeit, die eiert jetzt irgendwie so quer durch den Raum.
Wenn wir eine schwierige Simulationsphase haben, dann dauert relativ lang echt. Aber wir kommen virtuell nur langsam voran.
Weil wir halt viel simulieren müssen. Was weiß ich, die CPU ist gerade schwer am schuften oder mehrere CPUs sind schwer am schuften.
Das zu simulieren dauert lang. Dann haben wir vielleicht einen Bereich, der irgendwie einfacher zu simulieren ist, warum auch immer.
Beispielsweise weil die CPU nur zum Teil läuft, sie wartet irgendwie auf Platte. Platten-Simulation ist einfacher.
Dann geht es in der Zeit vielleicht mal ein bisschen, also in der virtuellen Zeit, schnell voran in einer relativ kleinen echten Zeit.
Und der beste Fall ist natürlich, wir simulieren, dass der Rechner auf Interaktion mit der Umwelt wartet.
Typischer Fall. CPU macht einen Halt und wartet auf den nächsten Interrupt. Das können wir beliebig schnell simulieren.
Dann kann man im Prinzip sofort weiterspringen in der virtuellen Zeit bis zum nächsten Zeitpunkt, wo was passieren soll.
Dann gibt es irgendwie so eine, die einzige Einschränkung, die es da gibt, ist, die Kurve muss die ganze Zeit steigen.
Also wenn die wieder runterfällt, schlechte Idee. Ihr könnt euch vorstellen, dass die Zeit jetzt rückwärts läuft. Also damit kommt keine Simulation klar. Ist logisch.
Dann haben wir, letzte Fall, haben wir uns überlegt, beides hat Vorteile, beides hat Nachteile. Überlegen wir uns mal, wie wir das vielleicht kombinieren.
Da war jetzt die Idee, eigentlich machen wir es nach realer Zeit. Virtuelle Zeit gleich real Zeit.
Allerdings sagen wir dann, wenn dann die CPU, die die virtuelle Maschine eine Weile weggeschedult ist, dann darf, wenn die Maschine wieder anläuft, dann darf die Zeit nicht sofort hochspringen.
Weil dann fehlt uns irgendwie so ein Zeitbereich. Was wir eventuell machen können, wir können dann der echten Zeit uns hoffentlich irgendwie versuchen relativ schnell wieder anzunähern.
Dass wir einfach sagen, wir lassen die Zeit in unserer virtuellen Maschine, wie das nun mal gleich noch angucken, irgendwie ein bisschen schneller hinterherlaufen. Dann tickt die Uhr einfach ein klein bisschen schneller als normal.
Ja, da waren wir dann stehen geblieben. Also noch Nachteile kurz. Laufzeitverhalten ist logischerweise ein bisschen schwer abzuschätzen.
Wenn ihr euch vorstellt, hier solche Kurven. Wann in echter Zeit sind wir wo in virtueller Zeit?
Man muss im Prinzip ja wissen, wie schwierig ist die Simulation bis zu dem Zeitpunkt. Das abzuschätzen ist nahezu unmöglich, sag ich mal.
Und natürlich noch abhängig von dem, wie viel der Host noch nebenbei zu tun hat. Aber das ist natürlich auch unabhängig von einer virtuellen Maschine.
Vorteil wäre, wir können es alle schön miteinander mischen. Echte Maschinen, virtuelle Maschinen, echte User, virtuelle User. Internet, das echte Internet kann man dran kabeln.
Das wäre schon ganz nickisch. Ihr kennt das ja, QEMU, VEMU, wie sie alle heißen, sind ja alle in der Lage, irgendwie mit der Umwelt zu kommunizieren.
Da waren wir jetzt stehen geblieben letzten Mittwoch, dass wir gesagt haben, wir wollen es versuchen, immer möglichst gut an die echte Zeit anzupassen.
Wir hatten uns grob überlegt, wie weit wir jetzt eigentlich abweichen dürfen. Na, so eine Millisekunde wäre wohl okay.
Presenters
Zugänglich über
Offener Zugang
Dauer
01:41:53 Min
Aufnahmedatum
2016-01-29
Hochgeladen am
2019-05-08 04: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