22 - Virtuelle Maschinen [ID:10996]
50 von 708 angezeigt

Die Technik läuft. Erste Frage. Gibt es Fragen?

Noch nicht? Okay. Falls euch noch etwas einfällt, meldet euch.

Jo, was ich heute erzählen will, ist das, was du letzten Mittwoch angemahnt hast.

Ihr braucht noch Info für die dritte Aufgabe, weil die meisten ja die zweite noch nicht abgegeben haben.

Eigentlich nicht, aber fühlt euch wieder getreten.

Aber es gibt schon Leute, die die zweite abgegeben haben. Für die ist natürlich jetzt die Info für die nächste Aufgabe wichtig.

Worum soll es gehen? Also einerseits geht es um Segmentierung und Memory Management Unit.

Wir haben zum Beispiel Intel, aber wer jetzt Intel MMU kennt, der kennt auch Spark MMU.

Oder andere MMUs, die tun sich alle nicht so viel. Ja, warum habe ich das ausgewählt als Aufgabe für euch?

Als dritte Aufgabe. Gut, einmal, dass man das mal macht. Aber was ihr unter der Haube natürlich auch dann machen müsst, ist irgendwie eine Exception behandelt.

Pages sind vielleicht nicht da. Dann muss das trotzdem irgendwie weitergehen.

Segmente sind vielleicht nicht definiert oder zu kurz oder irgend sowas. Dann muss es trotzdem in der CPU irgendwie weitergehen.

Und das ist leider was, was ein Student von mir, der gerade bei mir Bachelorarbeit macht, der kämpft gerade mit dem Thema.

Wie simuliert man das schnell? Immer wieder muss schnell sein.

Gut, ihr kennt das schon. Was macht so eine Intel Addition? Instruktion holen, wenn das funktioniert hat und nur dann.

Hol die Operanten, wenn das funktioniert hat und nur dann. Addiere, wenn das funktioniert hat. Ja, das wird wohl funktionieren.

Dann schreibe die Ergebnisse zurück und nur wenn das funktioniert hat, dann setzt auch den Instruction Pointer ein weiter und aktualisiere die Flex und das ganze Zeugs.

Das sind, ich weiß nicht mal, wie sie sich genau anbauen, aber das ist so eine lange Wenn-Dann-Kaskade.

Die ganzen Schritte, alle müssen funktioniert haben und nur dann schreibe ich die Ergebnisse, also sprich in die Register von der CPU.

Und diese ganz vielen IFs, die da vorkommen, die bremsen natürlich die CPU massiv aus.

Weil die ist die Simulation.

Aber ihr sollt, also das sollt ihr mal ausprobieren, wie man das vielleicht auch geschickt hinschreibt, wie man das hinkriegt.

So eine Art, ja, Abort oder Commit Semantik.

Also Semantik muss immer sein, entweder wird die Instruktion komplett ausgeführt oder gar nicht.

Und wenn gar nicht, dann macht er halt Exception Handler Aufruf.

Ja, gut, und was sollt ihr jetzt als Exception produzieren?

Na ja, beispielsweise mit der MMU beziehungsweise mit der Segmentierungseinheit.

Ja, Fragen? Fragen?

Hattet ihr keine?

Gut, also MMU Befehle können auf Weichern zugreifen.

Befehle können gegebenenfalls an andere Prozesse stören, wichtige Daten an andere Prozesse lesen.

Motivation für MMU, kennt ihr.

Das schnellste Modieren bezieht sich aber nur auf den Nicht-Fehlerfall, oder?

Im Fehlerfall darf man ruhig ein bisschen langsamer sein.

Da kannst du machen, ja.

Weil den sollte anständige Software nicht allzu oft nutzen, das heißt, vielleicht noch optimieren sie schnell, wenn grad nichts passiert.

Ja, ähm, eventuell natürlich Page Falls, die sind, also so massiv sollten sie nicht vorkommen.

Für 4 Kilobatts Eier hab ich einen Page Fall.

Ja, also da geht's noch.

Ähm, Division durch Null, das sollte natürlich eigentlich gar nicht vorkommen.

Segmentierungsfehler eigentlich auch nicht.

Ja?

Man soll in jedem Fall die Op-Compliment, eigentlichen Page Falls vornehmen.

Also wenn du gute Software auf einem guten Betriebssystem hast, gar nicht.

Eventuell, wenn das Programm startet, dass er sich die Seiten vom Programm immer dann reinholt, wenn er sie braucht.

Also einmal pro Seite, also die Seiten irgendwie lazy, die man ist.

Genau, ne? Also...

Also einmal halb vier Kilobit, das nicht so richtig ist.

Wenn du dann, keine Ahnung, Megabyte Programm hast, dann hast du halt 256 Page Falls.

Und ab dann sind sie alle da, und wenn der Speicher vom echten Rechner groß genug ist,

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:32:47 Min

Aufnahmedatum

2016-01-15

Hochgeladen am

2019-05-07 17:49: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

Einbetten
Wordpress FAU Plugin
iFrame
Teilen