Die Fragen skizzieren nur den Ablauf und sind nicht vollständig.
Anfangsfragen:
Was für Virtualisierungsstechnicken haben wir in der Vorlesung besprochen?
Wenn ich eine SPARC CPU-Simulieren möchte, kann ich da neben Emulation noch andere Virtualisierungstechniken verwenden?
Emulation & Jit:
Emulation was muss ich da alles machen um Instruktionen auszuführen?
Wie kann ich da optimieren?
Was ist die Grundidee eines Jits?
Was wird da optimierbar?
Blöcke: Wie lang/kurz sollten sie sein? Wie finde ich sie?
Könnte ich den Instruktion Pointer auch ganz weglassen?
Self modifying code: Was bedeutet das fuer meine Emulation? (–> Checks in der MMU)
Self-modifying code: wer verwendet sowas ueberhaupt moch?
Jit freundliche HW: wie sieht das bei der JVM aus?
Sichere Pointer: Wie bekomme ich die? Und wie wird der Code effizient geprüft?
Bibliotheksbasierte - Virtualisierung
Was ist die Grundidee?
Was muss fuer die Ausfuerung eines Programmes alles gegeben sein?
Welche Libs tausche ich aus?
Kann ich das einfach immer machen?
Wie verhält sich die Performance?
Was kann ich machen wenn das Programm das ich virtualisieren möchte statisch gebunden ist?
Paravirtualisierung:
Wie koennte ich auf Basis eines Betriebssystem virtualisieren?
Was hier die Grundidee?
Welche Dinge bilde ich hier worauf ab?
CLI/STI kommen im Kern sehr haeufig vor, sigprocmask zu verwenden ist nicht sehr performant. Wie kann man das verbessern?
Welche Race-Condidtions tretten beim setzen des enabled flags dann auf?