Emulation of the underlying raw hardware
Saturday, July 29, 2006 6:32:11 AM
Since each user can run whatever operating system they want, this type of virtual machine allows users to do things like run two different operating systems (sometimes referred to as "guests") on their "private" virtual computers. Also, experimental new versions of operating systems can be run at the same time as older, more stable, versions, each in a separate virtual machine. The process can even be recursive; IBM debugged new versions of its virtual machine operating system, VM, in a virtual machine running under an older version of VM.
One early user of this concept was the IBM VM/CMS time-sharing product, which used a relatively simple interactive computing single-user operating system, CMS, which ran on top of VM.
In that way, CMS could be written simply, as if it were running alone, and the VM operating system quietly provided multitasking and resource management services behind the scenes.
Not all VM users had to run CMS, though; some preferred to run some form of OS/360 (or eventually MVS) in one or more virtual machines, to provide traditional batch processing services to those users who wanted that. VM is still used today on IBM mainframes, and in some which are used as Web servers, the operating system running in each of many virtual machines is Linux.
The VMware, Parallels Workstation, and SVISTA packages do the same thing on modern PCs, trapping all hardware accesses and simulating all of a motherboard except for the processor.
On the other hand, plex86 can run only Linux under Linux using a specific patched kernel. It does not emulate a processor, but uses bochs for emulation of motherboard devices.
The x86 processor architecture as used in modern PCs does not actually meet the Popek and Goldberg virtualization requirements. Notably, there is no execution mode where all sensitive machine instructions always trap, which would allow per-instruction virtualization. As a result, VMware and similar virtualization software for the x86 must dynamically recompile privileged mode code. This technique incurs some performance overhead as compared to a VM running on a natively virtualizable architecture such as the IBM System/370 or Motorola MC68020. Intel and AMD have each announced plans to add hardware features for x86 virtualization to future x86 processors.













