[vox-tech] definition of a virtual machine

Joel Baumert vox-tech@lists.lugod.org
Mon, 31 Mar 2003 16:41:45 -0800


A virtual machine is essentially an idealized picture of
how a digital computer and to some extent operating system
works. You can think about it as an extension of the BIOS 
int 10h or 21h services that provide the same interface to 
hardware. The underlying hardware may be different, but
programs using the BIOS services don't have to be changed
to operate.  The analogy can be extended to the operating
system you are running or the libraries that you link into
your programs.  

The "advantage" that something like the JVM provides is
platform independence because it translates the instructions
of the program into code that runs on the machine.  With
the JVM you can run the code on another architecture without
having to recompile the software, something that may be 
impossible outside of the open source world :-).

The "disadvantage" is that code has to be translated and 
requires some level of processing to decode and also places
the programmer further away from the machine.  This distance
may translate into programs that are written poorly for the
target architecture.  That and it may be impossible to 
get certain things done because you really need access to
the hardware, which is can be a big issue with embedded
devices.


Joel


On Mon, Mar 31, 2003 at 04:30:49PM -0800, Peter Jay Salzman wrote:
> begin Michael Wenk <wenk@praxis.homedns.org> 
> > On Monday 31 March 2003 12:39 pm, Peter Jay Salzman wrote:
> > > 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.
> > > _______________________________________________
> > > vox-tech mailing list
> > > vox-tech@lists.lugod.org
> > > http://lists.lugod.org/mailman/listinfo/vox-tech
> > 
> > 
> > Well, I can't find my old CS book, but I prefer the Java definition for a 
> > VM: 
> > 
> > "An abstract specification for a computing device that can be implemented in 
> > different ways, in software or hardware. ..." 
> > 
> > It goes on to more java and jvm specific information.  I think the 
> > important keyword is abstract.  You're definition is more specific, but 
> > a VM can describe just about any computing device, and arguably 
> > every computing device may not have the components you listed.  
> > 
> > Mike
> 
> unfortunately, that definition doesn't really talk to me.   :(
> 
> pete
> 
> -- 
> Fingerprint: B9F1 6CF3 47C4 7CD8 D33E 70A9 A3B9 1945 67EA 951D
> _______________________________________________
> vox-tech mailing list
> vox-tech@lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech