2 - Virtuelle Maschinen [ID:10976]
50 von 809 angezeigt

также wurde als ¡��odernis Posens Freil His 325,2,NG,in numerous

Common-St Reinfl罹- Ludwig Daum marginale Sydney-

Pneumatore kind Steve submerorn permits

Gibt es Fragen vorweg?

Moment, gerade nicht.

Okay, dann geht's los.

Also letztes Mal stehen geblieben sind wir bei diesem Rechnerchen.

Kleines Miniteil.

Wir haben gesagt, wir simulieren den Rechner dadurch, dass wir sozusagen Schritt für Schritt jedes Teil des Rechners einen Schritt machen lassen.

Manche Komponenten tun eh nix. Also jedenfalls nicht von sich aus, aber auskommentiert.

Ansonsten CPU holt sich Instruktionen, Häppchen für Häppchen führt sie aus, holt die nächste Instruktion, führt sie aus und so weiter.

Was jetzt noch ein bisschen fehlt, ist das Außenrum.

Also beispielsweise muss man, wo war es, hier war ja irgendwie so die Abfrage, CPU, wenn kein Strom, dann nix.

Wenn Strom da, dann erstmal interabgucken. Jetzt ist die Frage, wer setzt diese Variable?

Gut, Stoffe, aber wegen der Vollständigkeit halber, es gibt dann eine Methode, um diese Variable zu setzen.

Sieht im Moment noch sehr simpel aus, wir werden später noch merken, da muss man im Endeffekt noch eine ganze Länge mehr tun.

Also es muss da so eine Methode geben, die man von der CPU aufrufen kann. Merkt ihr mal, von außen will da jemand was von dir.

Ja und dann, wollen wir noch den Rest uns ein bisschen angucken. Jetzt mal grob drüber fliegen.

Ihr habt gesehen, bei der CPU Simulation war was dabei, da waren einfach Load-Aufrufe dabei.

Load im Sinne von, holt er was aus dem Speicher. Ja, die Frage, wie kriegt man was aus dem Speicher?

Hier einfach so nachgemacht, ja ich übergebe ja als Parameter eine Adresse.

Die Adresse muss sich jetzt jemand angucken und entsprechend weiter verzweigen.

Also je nachdem, ob die Adresse in dem Bereich war, dann hole ich es mir aus dem Rom.

Wenn es in dem Bereich war, hole ich es mir aus dem Ram.

Und ansonsten haben wir nichts. Ist da entsprechend umgekehrt, da übergebe ich die Adresse und den Wert.

Und je nachdem wohin damit, ruf ich die entsprechende Methode von dem Bauteil dann auf.

Ja, ein bisschen was am Rande. Das ist das Wichtigste.

Was macht denn echt der Rechner, wenn da nichts ist, wo er hinlangt?

Eigentlich kann man erstmal sagen, ja?

Nee, nee. Wenn ein Benutzerprogramm der MMU sagt, gib mir mal die Adresse von, dann sagt die MMU, nö, da darfst du nicht.

Wenn der Rechner aber jetzt die MMU schon, also die haben wir hier erstmal noch weggelassen, passiert hat und die MMU liefert ihm eine Adresse und die Adresse ist Quatsch.

Die physikalische. Also, ok, hast recht, wenn ich dazu sagen soll.

Wenn die physikalische Adresse kaputt ist.

Typischerweise haben Rechner ja, also hier so unsere Beispiele sind, am Anfang mal 32-Bit-Rechner, dann haben sie eine 32-Bit-Adresse.

Das wären 4 GB RAM, aber vielleicht habe ich ja nur 2 GB RAM reingesteckt in meinen Rechner.

Dann ist ein Teil einfach frei.

Also, ok, Segmentation fault ist nicht, weil das sagt die MMU.

Ich glaube irgendwo mal gelesen zu haben, das ist dann einfach eigentlich ein zufälliger Wert.

Andere Vorgehege.

Es gibt Architekturen, die liefern dann einen Bus-Error.

Wenn ihr in der Liste der Unix-Signale nachguckt, da gibt es auch einen Bus-Error.

Der wird nun nie verwendet, weil die meisten Architekturen keinen Bus-Error liefern, nicht unerreifend.

Aber beispielsweise ARM-CPUs oder Spark-CPUs, die sagen, die legen die Adresse auf den Bus und wenn dann eine Weile keine antwortet,

oder es wird ein Bus-Error.

Ok, dann kann man auf die Adresse nicht zugreifen, dann bricht er halt ab.

Aber Intel Prozessoren, denen ist das wurscht. Aber zufällig ist es auch nicht.

Eine andere Frage, muss man das überhaupt simulieren?

Ich nehme auch den Motto, wer ins Leere langt, der hat selber Schuld.

Ist ja in echt auch so, wenn ich da irgendwo hinlange, wo kein Speicher ist, dann habe ich nicht erwartet, dass ich was speichern kann.

Ja, vielleicht gewartet, dass ich etwas Schöntes lese.

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:37:27 Min

Aufnahmedatum

2015-10-21

Hochgeladen am

2019-05-06 09:19: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

Einbetten
Wordpress FAU Plugin
iFrame
Teilen