Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 4 » Fragen (Übersicht)
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
pruefungen:hauptstudium:ls4:vm-2018-03-22 [22.03.2018 10:27] – angelegt sedrubal | pruefungen:hauptstudium:ls4:vm-2018-03-22 [22.03.2018 10:31] (aktuell) – Formatierung gefixt sedrubal | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | * Prüfer: V. Sieh | + | |
- | * Beisitzer: Bernhard | + | * Beisitzer: Bernhard |
- | * 7,5 ECTS | + | * 7,5 ECTS |
====== Fragen ====== | ====== Fragen ====== | ||
Zeile 8: | Zeile 8: | ||
A: | A: | ||
- | - Emulator (& JIT) | + | |
- | - Hardware basiert | + | - Hardware basiert |
- | - Paravirtualisiert | + | - Paravirtualisiert |
- | - OS-basiert | + | - OS-basiert |
- | - Lib-basiert | + | - Lib-basiert |
Q: Angenommen, du hast einen Server und möchtest Webspace für Kunden anbieten. Manche wollen aber Apache und manche wollen $Microsoft Webserver. Was machst du, was brauchst du? | Q: Angenommen, du hast einen Server und möchtest Webspace für Kunden anbieten. Manche wollen aber Apache und manche wollen $Microsoft Webserver. Was machst du, was brauchst du? | ||
A: | A: | ||
- | * Kunden überzeugen, | + | |
- | * Versuchen Microsoft Webserver mit bibliotheksbasierter Virtualisierung laufen zu lassen | + | * Versuchen Microsoft Webserver mit bibliotheksbasierter Virtualisierung laufen zu lassen |
Q: Was muss man dafür machen? | Q: Was muss man dafür machen? | ||
A: | A: | ||
- | * Microsoft Bibliotheken nachbauen und Linux Sachen (Syscalls, FS, ...) verwenden | + | |
- | * Loader und Linker anpassen | + | * Loader und Linker anpassen |
- | * Personalities hinterlegen | + | * Personalities hinterlegen |
Q: Was macht man bei FreeBSD, das die gleichen Syscallnummern, | Q: Was macht man bei FreeBSD, das die gleichen Syscallnummern, | ||
Zeile 47: | Zeile 47: | ||
A: Damit man selten in die Hauptschleife zurück muss. Das ist schlecht, weil | A: Damit man selten in die Hauptschleife zurück muss. Das ist schlecht, weil | ||
- | * Man vor dem Wiedereintritt Interrupts prüfen muss | + | |
- | * Beim Austritt Flags, etc. evaluieren muss | + | * Beim Austritt Flags, etc. evaluieren muss |
- | * Den Instruktion Pointer setzen muss | + | * Den Instruktion Pointer setzen muss |
- | * Außerdem muss man, bevor man einen Block ausführt den erst raus suchen, was ggf. langsam ist | + | * Außerdem muss man, bevor man einen Block ausführt den erst raus suchen, was ggf. langsam ist |
da musste er mich paar mal treten. | da musste er mich paar mal treten. | ||
Zeile 58: | Zeile 58: | ||
A: | A: | ||
- | * Write after Write herausnehmen (Flags nur evaluieren, wenn man sie braucht, mehrmaliges load von state Pointer, obwohl der schon im Register steht, entfernen). | + | |
- | * Zähler in Blöcke und die dann optimieren | + | * Zähler in Blöcke und die dann optimieren |
- | * Zähler in if else einbauen und ggf. umsortieren | + | * Zähler in if else einbauen und ggf. umsortieren |
- | * Blöcke verketten | + | * Blöcke verketten |
Q: Wie groß sind jetzt solche Blöcke? | Q: Wie groß sind jetzt solche Blöcke? | ||
Zeile 85: | Zeile 85: | ||
A: | A: | ||
- | * Keine Interrupts (da müsste man Block verlassen) | + | |
- | * wenige Exceptions bzw. wenige Instruktionen, | + | * wenige Exceptions bzw. wenige Instruktionen, |
- | * sichere Pointer (keine berechneten Pointer und tableswitch und virtualcall) | + | * sichere Pointer (keine berechneten Pointer und tableswitch und virtualcall) |
...und da war doch noch mehr... | ...und da war doch noch mehr... | ||
Zeile 120: | Zeile 120: | ||
Problem: VMEXIT/ | Problem: VMEXIT/ | ||
Hardwareerweiterungen helfen, das zu beschleunigen: | Hardwareerweiterungen helfen, das zu beschleunigen: | ||
- | * eingestellte Exceptions und Interrupts werden direkt in der VM erledigt | + | |
- | * manche kritischen Instruktionen direkt in der VM erlaubt, haben aber andere Auswirkung (CLI schaltet Interrupt nur für VM aus) | + | * manche kritischen Instruktionen direkt in der VM erlaubt, haben aber andere Auswirkung (CLI schaltet Interrupt nur für VM aus) |
Q: Wie macht man da die Speicherverwaltung | Q: Wie macht man da die Speicherverwaltung | ||
Zeile 127: | Zeile 127: | ||
A: | A: | ||
- | - Man mappt Pagetable (PT) weder les, noch schreibbar, wenn darauf zugegriffen wird -> Pagefault -> RW mappen -> (Singlestep ->) Adresse, austauschen -> nicht les- & schreibbar mappen, weiter | + | |
- | - besser: Wenn eine PT Modifikation kommt, ist es wahrscheinlich, | + | - besser: Wenn eine PT Modifikation kommt, ist es wahrscheinlich, |
Q: Wie macht man das bei Paravirtualisierung? | Q: Wie macht man das bei Paravirtualisierung? | ||
Zeile 134: | Zeile 134: | ||
A: | A: | ||
- | - also noch besser als die 2. Möglichkeit wäre: Die VM komplett auf einer PT Schattenkopie arbeiten lassen, die aber nicht im CR3/ | + | |
- | - Bei Paravirtualisierung außerdem: VM weiß, dass sie auf Hypervisor läuft und wurde angepasst: Hypercalls verwenden, damit Hypervisor das Mapping machen kann. | + | - Bei Paravirtualisierung außerdem: VM weiß, dass sie auf Hypervisor läuft und wurde angepasst: Hypercalls verwenden, damit Hypervisor das Mapping machen kann. |
Q: Jetzt gibt es aber u.U. sehr viele Veränderungen in der PT zu machen. | Q: Jetzt gibt es aber u.U. sehr viele Veränderungen in der PT zu machen. |