VirtualBox

Changes between Version 13 and Version 14 of VirtualBox architecture


Ignore:
Timestamp:
Nov 16, 2006 5:19:31 PM (17 years ago)
Author:
jose
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • VirtualBox architecture

    v13 v14  
    4444
    4545 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 when
     46 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
    4747    * 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/`);
    4848    * 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;
    4949    * 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.
    5151 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).
    5252

© 2023 Oracle
ContactPrivacy policyTerms of Use