[vox-tech] definition of a virtual machine

Michael Wenk vox-tech@lists.lugod.org
Mon, 31 Mar 2003 17:03:18 -0800


On Monday 31 March 2003 04:59 pm, 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


Looks good in that context. :-)
Mike
  
>
>
> 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


--
wenk@praxis.homedns.org
Mike Wenk