Changes between Version 13 and Version 14 of VirtualBox architecture
- Timestamp:
- Nov 16, 2006 5:19:31 PM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
VirtualBox architecture
v13 v14 44 44 45 45 1. Your CPU can be '''executing host ring-3 code''' (e.g. from other host processes), or '''host ring-0 code,''' just as it would be if !VirtualBox wasn't running. 46 2. Your CPU can be '''emulating guest code .'''Basically, !VirtualBox tries to run as much guest code natively as possible. But it can (slowly) emulate guest code as a fallback when it is lost about why guest code is not working, or when the performance penalty of emulation is not too high. Our emulator (in `src/emulator/`) is based on [http://fabrice.bellard.free.fr/qemu/ QEMU] and typically steps in when46 2. Your CPU can be '''emulating guest code''' (within the ring-3 host VM process). Basically, !VirtualBox tries to run as much guest code natively as possible. But it can (slowly) emulate guest code as a fallback when it is lost about why guest code is not working, or when the performance penalty of emulation is not too high. Our emulator (in `src/emulator/`) is based on [http://fabrice.bellard.free.fr/qemu/ QEMU] and typically steps in when 47 47 * guest code disables interrupts and !VirtualBox cannot figure out when they will be switched back on (in these situations, !VirtualBox actually analyzes the guest code using its own disassembler in `src/VBox/Disassembler/`); 48 48 * for execution of certain single instructions; this typically happens when a nasty guest instruction such as `LIDT` has caused a trap and needs to be emulated; 49 49 * for any real-mode code (e.g. BIOS code, a DOS guest, or any operating system startup). 50 3. Your CPU can be '''running guest ring-3 code natively .'''In !VirtualBox, this is called "raw ring 3". This is, of course, the most efficient way to run the guest, and hopefully we don't leave this mode too often. The more we do, the slower the VM is compared to a native OS, because all context switches are very expensive.50 3. Your CPU can be '''running guest ring-3 code natively''' (within the ring-3 host VM process). In !VirtualBox, this is called "raw ring 3". This is, of course, the most efficient way to run the guest, and hopefully we don't leave this mode too often. The more we do, the slower the VM is compared to a native OS, because all context switches are very expensive. 51 51 4. Your CPU can be '''running guest ring-0 code natively.''' Here is where things get hairy: The guest only ''thinks'' it's running ring-0 code, but !VirtualBox has patched the guest OS to instead enter ring 1 (which is normally unused with x86 operating systems). 52 52