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.

Link zu der Vergleichsansicht

pruefungen:hauptstudium:ls4:vm-2018-03-22 [22.03.2018 10:27] – angelegt sedrubalpruefungen:hauptstudium:ls4:vm-2018-03-22 [22.03.2018 10:31] (aktuell) – Formatierung gefixt sedrubal
Zeile 1: Zeile 1:
-* Prüfer: V. Sieh +  * Prüfer: V. Sieh 
-* Beisitzer: Bernhard +  * Beisitzer: Bernhard 
-* 7,5 ECTS+  * 7,5 ECTS
  
 ====== Fragen ====== ====== Fragen ======
Zeile 8: Zeile 8:
  
 A: A:
-- Emulator (& JIT) +  - 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, dass sie keinen Microsoft Webserver brauchen. +  * Kunden überzeugen, dass sie keinen Microsoft Webserver brauchen. 
-* 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 +  * 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, wie Linux verwendet? Q: Was macht man bei FreeBSD, das die gleichen Syscallnummern, wie Linux verwendet?
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 +  * 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). +  * 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) +  * Keine Interrupts (da müsste man Block verlassen) 
-* wenige Exceptions bzw. wenige Instruktionen, die Exceptions erzeugen können +  * wenige Exceptions bzw. wenige Instruktionen, die Exceptions erzeugen können 
-* 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/VMRESUME ist Kontextwechsel -> langsam -> muss vermieden werden. Problem: VMEXIT/VMRESUME ist Kontextwechsel -> langsam -> muss vermieden werden.
 Hardwareerweiterungen helfen, das zu beschleunigen: Hardwareerweiterungen helfen, das zu beschleunigen:
-* eingestellte Exceptions und Interrupts werden direkt in der VM erledigt +  * 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 +  - 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, dass mehrere folgen. Deshalb bei Modifikation PT-Ast aushängen -> RW mappen -> VM machen lassen. Bei Pagefault prüfen, ob es daher kommt, dass Ast ausgehängt ist und wenn VM TLB flusht -> Veränderungen von VM prüfen und und anpassen -> Einhängen -> nicht les- und schreibbar mappen, laufen lassen+  - besser: Wenn eine PT Modifikation kommt, ist es wahrscheinlich, dass mehrere folgen. Deshalb bei Modifikation PT-Ast aushängen -> RW mappen -> VM machen lassen. Bei Pagefault prüfen, ob es daher kommt, dass Ast ausgehängt ist und wenn VM TLB flusht -> Veränderungen von VM prüfen und und anpassen -> Einhängen -> nicht les- und schreibbar mappen, laufen lassen
  
 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/PT-Base-Register eingehängt ist. Bei Pagefault und TLB-Flush schauen, was in der Schattenkopie steht und Anpassung in der eigentlichen Pagetable machen. +  - also noch besser als die 2. Möglichkeit wäre: Die VM komplett auf einer PT Schattenkopie arbeiten lassen, die aber nicht im CR3/PT-Base-Register eingehängt ist. Bei Pagefault und TLB-Flush schauen, was in der Schattenkopie steht und Anpassung in der eigentlichen Pagetable machen. 
-- 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.