[vox-tech] definition of a virtual machine

Peter Jay Salzman vox-tech@lists.lugod.org
Mon, 31 Mar 2003 12:39:01 -0800


can someone tell me if this is a formally correct explanation of what a
virtual machine is?

pete


A "real computer" provides an operating system many things, including a
CPU, I/O channels, memory, a BIOS to provide low level access to
motherboard and I/O resources, etc.  When an operating system wants to
write to a hard drive, it communicates through a device driver that
interfaces directly with the hardware device memory.

However, it's possible to give a program all the hardware resources it
needs.  When it wants to access a hard drive, give it some memory to
write to.  When it wants to set an IRQ, give it some bogus instructions
that lets it think it set an IRQ.  If you do this correctly, then in
principle, there's no way for the application to know whether it's
really accessing hardware or tricked by being given resources which
simulate hardware.  A virtual machine is the environment which tricks
applications into believing they're running on a real computer.  It
provides all the services that a real computer would provide.
		
VM's were used initially in the 1960's to emulate time shared operating
systems, but these days we use them to run software which was written
for foreign operating systems, or more commonly, an entire operating
system.  Because of the nature of the VM, the foreign OS can't tell the
difference between operating in a VM or in a "real" machine.