virtualization - modrpc/info GitHub Wiki
- wiki: https://en.wikipedia.org/wiki/Hypervisor
- computer SW/FW/HW that creates and runs virtual machines
- QEMU Internals: https://qemu.weilnetz.de/doc/qemu-tech-20160903.html
- Bellard: QEMU, a Fast and Portable Dynamic Translator. USENIX'05
- QEMU consists of:
- CPU emulator: e.g. x86, PPC, ARM, Sparc, Xtensa
- Emulated devices: e.g. VGA display, serial port, PS/2 mouse and keyboard, IDE hard disk, NE2000 network card, etc.
- Generic devices: block devices, characteer devices, network devices used to connect the emulated devices to the corresponding host devices
- Machine descriptions: e.g. PC, PowerMac, Sun4m, which instantiates the emulated devices
- Debugging interface
- User interface
- QEMU uses dynamic translation -- runtime conversion of the target CPU instructions (e.g. Xtensa instructions) into the host isntruction set (e.g. x86 isntructions)
- HOW:
- STEP #1: split each target CPU instrucion into few simpler instructions called micro operations
- each micro operation is implemented by small C code
- STEP #1 is done manually (user maps target CPU instruction into predefined basis of micro operations)
- After compiling these code, now we get a library of micro operations, say MICROLIB
- STEP #2: DYNGEN tasks MICROLIB as input and generates a dynamic code generator
- dynamic code generator is invoked at runtime to generate a complete host function which concatenates several micro operations.
- STEP #1: split each target CPU instrucion into few simpler instructions called micro operations
- How quest physical RAM works: http://blog.vmsplice.net/2016/01/qemu-internals-how-guest-physical-ram.html