[vox-tech] definition of a virtual machine

Peter Jay Salzman vox-tech@lists.lugod.org
Mon, 31 Mar 2003 16:59:46 -0800


hey mike and joel,

so is there anything flat out wrong with the paragraphs?  the intended
audience are readers of the linux gamers' howto who want to know what
things like vmware are.  not people taking a course on java.   :)

i prolly should've mentioned that from the start.

pete


begin Joel Baumert <kender@geeksource.net> 
> 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.
> > > 
> > > 
> > > 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