2
edits
Changes
→Virtual machines (VMs)
=== Virtual machines (VMs) ===
'''Virtual machines''' emulate some real or fictional hardware, which in turn requires real resources from the ''host'' (the machine running the VMs). This approach, used by most ''system emulators'', allows the emulator to run an arbitrary ''guest operating system'' without modifications because guest OS is not aware that it is not running on real hardware. :( The main issue with this approach is that some CPU instructions require additional privileges and may not be executed in user space thus requiring a ''virtual machines monitor'' (VMM) to analyze executed code and make it safe on-the-fly. Hardware emulation approach is used by [http://www.vmware.com/ VMware] products, [http://parallels.com/ Parallels] and [http://www.microsoft.com/windowsserversystem/virtualserver/default.mspx Microsoft Virtual Server].:( :) You changed topics in mid-paragraph. These emulators are used to create virtual machines, [http://dosbox.sourceforge.net/ DosBOX]and [http://bochs.sourceforge.net/ Bochs]. Virtual Machine emulators are able to run x86 code and OSs on a wide variaty of computer hardware, I.E. ppc/sparc/alpha. The others you mention use cpu virtualization, Rather, guest code is executed as-is in a safe VM environment managed by a VM monitor. Guest kernel code is executed at a less priviliged level, causing privileged operations to generate exceptions which are managed by the VM monitor. Like the abovementioned VMware and [http://plex86.sourceforge.net/ Plex86]. Unlike bochs and dosbox, instructions are not translated(emulation) into native code. This means that vmware and plex can only run x86 OSs on x86 hardware. :)
=== Paravirtualization ===