10 - Virtuelle Maschinen [ID:10959]
50 von 770 angezeigt

Ihr diskutiert schon schön über eure Simulationen.

Guten Morgen.

Gestern haben wir uns überlegt, wie das mit VMWare ausschaut.

Ihr habt alle etwas beigelernt, wie man sowas machen kann.

Ich habe noch ein paar andere Varianten für euch, wie man simulieren kann.

Das was ich euch heute zeigen will, sind Teile wieder von V-Maschinen.

V-Maschinen ist ursprünglich mal entstanden. Nämlich aus dem Grund, Fehlerinjektion.

Der Stuhl hat sich früher immer beschäftigt mit Fehlertoleranzmaßnahmen.

Ich baue meinen Rechner dreimal auf und dahinter einen Motor.

Ich rechne alles doppelt und nur wenn zweimal das gleiche rauskommt, dann war es wohl richtig.

Da kann man sich tausend solcher Sachen ausdenken. Da war nur die Frage, geht das wirklich?

Ein typisches Beispiel aus der sonstigen Welt. Linux gibt so ein Software-Rate.

Wer kennt das?

An sich ist es eine Art Rate. Wir haben fünf Platten im Rechner und sagen, Software verteile mal die Anfragen auf die fünf Platten.

Rate sagt mir, wenn eine Platte kaputt geht, dann müsste die Software es schaffen.

Die Frage ist nur, tut sie das wirklich?

Wie testet man solche Software?

Ich haue mir den Hammer auf meine Platte und gucke, ob es hinterher noch geht.

Okay, da war die Idee. Na ja dann hauen wir doch mit dem hammer auf die virtuelle

Platte. Was lange investments rainbow axe contra coat in

umgeschrieben wird, wenn ich neue heile virtuelle Platte eingebaut habe und so

weiter. Die frage ist jetzt, wie kriegen wir diese Fehler in unsere virtuelle

Maschine? Also erst mal erste Überlegung, ganz einfach.

Etwas kaputt zu simulieren geht wahrscheinlich sogar noch einfacher, als

es heil zu simulieren. ich vermute mal, dass eure i386 CPU im

Moment noch ziemlich kaputt ist. Kaputt ist sie bestimmt, heil soll sie irgendwann werden,

aber das ist der größere Schritt. Wir wollen jetzt Fehler injizieren, also Fehler einbauen

ist im Prinzip nicht schwer, aber es soll sich natürlich in keinster Weise jetzt sagen wir mal

auf beispielsweise die zeit auswirken wenn ich jetzt eine fehlerinjektion mache

sagen wir mal ich möchte simulieren dass mein speicher irgendwo ein bitflip hat

oder eine speicherzelle ist immer null egal ob ich reinschreibe nicht rein wenn

ich lese kommt eine null raus

dann soll die zeit natürlich nicht verändert werden wenn ich jetzt auf den

speicher zugreift das muss eigentlich noch genauso schnell gehen wie früher

haben wir uns ja gestern angeguckt wie das geht oder letzte woche angeguckt wie

QEMU das macht mit diesem mit einem MMU Lookup in diesem TLB wollen wir gleich

die virtuelle Adresse ausrechnen bei unserem Host und da greifen wir

darauf zu wenn wir das machen keine Fehlerinjektion möglich der krabbelt

ja einfach auf den Speicherzellen rum haben wir keinen Einfluss drauf

wir können es natürlich so machen wir können jetzt den Speicher anders

simulieren mit Callback dann ist das Zeitverhalten aber Stunden langsamer

ja jetzt müssen wir es irgendwie hinkriegen Fehler zu simulieren

okay die fehlerhaften Komponenten die dürfen sich natürlich zeitlich vielleicht

auch ein bisschen anders verhalten sagen wir mal eine Platte die kaputt ist

naja wenn die jetzt zeitlich gesehen langsamer ist okay wenn wir eine

Speicherzelle haben die jetzt fehlerhaft ist dass die ein bisschen

langsamer ist okay aber das ganze System es darf jetzt nicht der gesamte

Speicher langsam werden nur deshalb weil wir jetzt ein Bit kaputt machen

wollen ja und da ist die Frage wie kriegen wir das hin

ja eine Variante beispielsweise für die CPU wenn wir jetzt sagen wir wollen im

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:27:15 Min

Aufnahmedatum

2012-11-23

Hochgeladen am

2019-05-05 02:39: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

  • untersuchen CPU-Emulationen

  • untersuchen Geräte-Emulationen

Einbetten
Wordpress FAU Plugin
iFrame
Teilen