Inhaltsverzeichnis

Virtuelle Maschinen (7.5 ECTS)

Prüfer: Volkmar Sieh, Beisitzer: Bernhard Heinloth

Wie immer sehr entspannte Atmosphaere. Ein oder zwei Fragen fallen mir leider nicht mehr ein…

Allgemeines

Was haben wir denn so in der Vorlesung gemacht? Welche Virtualisierungsmethoden haben wir besprochen

Emulator, JIT, hardwarebasiert, betriebssystembasiert, bibliotheksbasiert jeweils kurz erklaert

Bibliothekesbasierte Virtualisierung

Bleiben wir doch mal bei bibliotheksbasierter Virtualisierung. Was muss man dafuer tun?

Wann nutzen denn Programme keine Bibliotheksfunktionen?

Was macht mann dann?

Personalities (+ Erklaerung was ist das)

Was sind die Vorteile und Nachteile bibliotheksbasierter Virtualisierung?

Vorteile:

Nachteile:

Wie schaut das mit der Performance aus?

Du hast vorhin etwas davon gesagt, dass das Instruction Set passen muss. Sparc Programme unter Intel funktioniert natuerlich nicht. Aber funktioniert z.B. jedes Intel Programm unter Intel?

Emulation

Du hattest Eingangs erwaehnt, dass die Emulation langsam ist. Warum?

Warum ist der Speicherzugriff ueber den Bus langsam. Erklaere mal wie das funktioniert.

Hier gab es noch den Hinweis, dass es in einem System ja mehrere Busse gibt

Was macht man wenn sich jetzt doch ein Port aendert

Das Geraet muss der CPU mitteilen, dass sich Callbacks geaendert haben

Und woher weiss das Geraet wer die CPU ist?

Das weiss das Geraet wahrscheinlich gar nicht. Also im Zweifellsfall Broadcast-Nachricht an alle, dass sich etwas geaendert hat.

Selbst wenn man Adressen cachet. Warum ist der Speicherzugriff langsam trotzdem langsam? Was wird da alles ueberprueft?

Ja passt. War auch schon eine ganze Menge Wie kann man diese Abfragen noch mit in seinen Cache einbauen?

Mehrdimensionalen Cache erklaeren. Siehe Foliensatz „Speicherhierarchie“ Folie 20ff.

Beim Alignment-Check. Motiviere doch mal warum zwischen den oberen Einsen (Seitenadresse) und den unteren beiden Einsen (Alignment) noch Platz sein muss?

JIT

Du hattest auch schon dem Just-in-Time Compiler erwaehnt. Warum wird das schneller?

Wie kann uns der JIT bei den Speicherchecks von vorhin helfen?

Was macht man wenn sich eine der Bedinungen aendert. Z.B. wenn die Segmentbasisadresse umgesetzt wird? Kompilierten Code invalidieren und beim naechsten Zugriff drauf neu Kompilieren.

Bei pthreads ist die Segmentbasisadresse meistens null. Wenn sie aber auf threadlocal storage haben aendert sie sich.