Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 4 » vm-2016-02-24   (Übersicht)

Pruefer: Dr. Volkmar Sieh, 25. Feb. 2016

Pruefling: Christian Bay

P: Ihr habt einen Emulator gebaut, was war daran besonders schwer?

P: Was war schwer beim debuggen von eurer VM?

P: Was genau hat es mit FLAGS auf sich und wann berechnet man diese?

S: Flags werden nach jeder Instruktion berechnet, selbst 'inc'. Eigentlich braucht man sie nur vor einem bedingten Sprung und bei bestimmten Operationen wie 'add' mit Carry. Bei JVM braucht man das nicht.

P: Warum braucht man das bei JVM nicht?

S: JVM besitzt fuer Flagberechnung nur cmp Befehl. Einzige Mikroinstruktion, die dies tut.

P: Was macht die JVM sonst noch so, um schneller zu sein?

S: Keine Exceptions ausser Nullpointer und Div-by-zero Exception. Blockverkettung und Blockpuffer.

P: Welchen Vorteil hat JVM ggue normalem JIT

S: Man kann gesamten Code kompilieren vor Ausfuehrung. Was ich denk vergessen habe: Keine MMU, Interrupts, Exceptions mit try-catch Bloecken abfangen.

P: Wie verbessert JVM ihren Code zur Laufzeit?

S: Da hat er mich auf dem falschen Fuss erwischt. Ich habe dann gemeint via Profiling durch randominisiertes zustellen von Interrupts. War wohl nur so halb richtig.

P: Thema Paravirtualisierung: Angenommen man hat XEN und eine Dom0 auf der Linux laeuft. Welche Sachen muss man bei dem Linux anpassen?

S: Syscalls zu Signalen umbauen. Zur Not mit Debugger. Trampoline Page einrichten zur Ein- bzw. Ausblendung von GuestOS. 3 Moeglichkeiten MMU einzubinden:

1. Hypervisorcalls → sehr teuer wegen dem Kontextwechsel + Sicherung vom Kontext

2. Wie in Hardware-basierter Virtualisierung:

Da habe ich erklaert, wie anhand von PageFaults den Domains ermoeglicht wird Read/Write auf ihre Pagetabellen zuzugreifen, ohne die Sicherheit zu gefaehrden, weil diese bspw. Pages eintragen, auf die die Domains nicht zugreifen duerfen.

3. Schattentabellen

P: Wie funktioniert Bibliotheksbasierte Virtualisierung?

S: Erklaerung anhand von WINE.

P: Was ist das Problem bei statisch gebundenen Applikationen?

S: Syscalls muessen dann nachgebaut werden. Stichwort: Personalization.

P: Wann kann es trotzdem zu Problem kommen? Bsp: open(2) auf BSD mit Linux Applikation.

S: Unterschiedliche Environment: Gewissen Dateien existieren in Linux nicht, die es in BSD gibt und vice versa.