[vox-tech] definition of a virtual machine

Joel Baumert vox-tech@lists.lugod.org
Mon, 31 Mar 2003 17:05:31 -0800


I don't have a problem with your original description
of a virtual machine...

Joel

On Mon, Mar 31, 2003 at 04:59:46PM -0800, Peter Jay Salzman wrote:
> 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
> _______________________________________________
> vox-tech mailing list
> vox-tech@lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech