Qemu & KVM Παντελής Κουκούσουλας (aka pkt)
Qemu “Ο Qemu κάνει κάτι πραγματικά εκπληκτικό: Μπορεί να εξομοιώσει 9 αρχιτεκτονικές σε 13 φυσικές αρχιτεκτονικές” Anthony Liguori, Qemu Μaintainer
Στόχοι ● Απόδοση ● “Πραγματικού κόσμου” Αρχιτεκτονικές ● Υποστήριξη Ποικιλίας λειτουργικών
Πώς; ● Micro-ops (oplets) ● Translation Blocks ● Dynamic Translation ● mmap()
KVM ● Βασικά ένας οδηγός για τις επεκτάσεις VMX / SVM ● /dev/kvm (IOCTLs) ● Qemu ως πελάτης ● Ένα host thread για κάθε vcpu ● Linux ως hypervisor (kernel, mm, etc) ● Containers (LXC)
KVM
Εικονικά Περιφερειακά ● Emulated ● Paravirtual ● PCI Pass-through
VirtIO API (Russell '08) ● FIFOs (backed by shared memory pages) ● Configuration support (“Feature flags”) ● Implemented Backends for PCI/Lguest ● PCI ID space donated by Qumranet ● Virtio-net / Virtio-block drivers exist
Υποστήριξη USB ● Emulated UHCI/OHCI controllers ● Emulated EHCI Controller (broken) ● VirtIO USB (under construction)
Fun Projects Reverse Debugging OpenGL Support Nested VMs New peripherals ISA Extensions Qemu-LLVM
Classical problems to solve: Management of translated code; Register allocation; Condition code optimization; Direct block chaining; Memory management; Self-modifying code support; Exception support; Hardware interrupts; User mode emulation.
Εικονικά Περιφερειακά
Block Chaining