====== Virtuelle Maschinen ====== **Prüfer:** Volkmar Sieh * Nennen Sie eine Virtualisierungslösung: Bibliotheksbasiert * Was ist das? * Welche Vor-/Nachteile? * Was passiert, wenn ich wine implementieren will und Windows bei einem Update die Syscall-Nummern ändert? -- Gar nichts, die Windows syscalls sind nicht relevant. * Wie kann ich ein statisch gelinktes Linux-Binary unter BSD ausführen? -- Mit einer eigenen Betriebssystem-Personality * Wie erkenne ich, welche Personality ich anbieten soll? -- Typ/Header der auszuführenden Datei. * Was könnte noch ein Nachteil sein, Software statt Hardware nachzumachen? -- Er wollte darauf hinaus, dass sich Hardware nicht ändert. Themenwechsel. * Was ist Emulation? * Wie unterscheided sie sich von Simulation? -- Er wollte hören, dass die Grenze fließend ist und von der Schicht abhängt, die simuliert/emuliert werden soll. * Warum ist es langsam? -- CPU simulation langsam * Lohnt es sich dann überhaupt, wenn so viel langsamer? -- Auf IO warten muss man eh. * Busse, Chips, Komponenten. Wie krieg ich das schnell? -- Callbacks und Cachen. * Bios ändert die PCI belegung, was jetzt? -- Cache invalidieren. * Wie kann ich es schneller machen? -- JIT * Was ist ein JIT? * Warum ist das schneller? Der compiler braucht ja auch Zeit. -- compile once, execute often * Bei Kontextwechseln wird ja immer neuer Code eingeblendet, also muss ich immer alles neu übersetzen. Ist das nicht langsam? -- Braucht halt gute Invalidierungsstrategie, die über Kontextwechsel hinaus speichert. * Preisfrage. Ich cache ja virtuelle Adressen, die sind nicht eindeutig, bei Adressraumwechseln. Was tun? -- CR3 mit als key verwenden.