Required guest drivers will exactly match the environment being simulated. Ultimately the virtual machine may not act like any hardware that really exists, and may need VM-specific drivers, but the set of guest drivers will be consistent across a large number of virtual environments.Īn emulator on the other hand tries to exactly reproduce all the behavior, including quirks and bugs, of some real hardware being simulated. The purpose of an emulator is to accurately reproduce the behavior of some hardware.īoth aim for some level of independence from the hardware of the host machine, but a virtual machine tends to simulate just enough hardware to make the guest work, and do so with an emphasis on efficiency of the emulation/virtualization. The purpose of a virtual machine is to create an isolated environment. For the former, a hypervisor validates (and usually modifies, to match the hypervisor's own memory) the page table operation and performs the protected instruction itself I/O operations are mapped to emulated device hardware instead of emulated CPU.Īnd just to complicate things, Wine is also more a hypervisor/virtual machine (albeit at a higher ABI level) than an emulator (hence "Wine Is Not an Emulator"). Protected access means things like setting up page tables or reading/writing I/O ports.
Emulators emulate hardware without relying on the CPU being able to run code directly and redirect some operations to a hypervisor controlling the virtual container.Ī specific x86 example might help: Bochs is an emulator, emulating an entire processor in software even when it's running on a compatible physical processor qemu is also an emulator, although with the use of a kernel-side kqemu package it gained some limited virtualization capability when the emulated machine matched the physical hardware - but it could not really take advantage of full x86 self-virtualization, so it was a limited hypervisor kvm is a virtual machine hypervisor.Ī hypervisor could be said to "emulate" protected access it doesn't emulate the processor, though, and it would be more correct to say that it mediates protected access.
Virtual machines make use of CPU self-virtualization, to whatever extent it exists, to provide a virtualized interface to the real hardware.