Minirogue wrote:so...this raises an interesting question/realization for me: I have heard the words "virtual machine" before in Java. Would this be why java is a multi-platform language? because it creates a virtual machine that runs beneath the OS?
Well, sort of. The JVM is (in terms of effect and means) a qualitatively different animal from the sort of virtualization that VMWare does. (For the most part, whatever I say about VMWare is equally applicable to VirtualPC on Windows, and to a lesser extent Xen, and probably Parallels on OS X.)
The JVM is essentially emulating a fictitious set of hardware that runs Java bytecode; during execution, there's a JIT compiler and bytecode interpreter that translate the Java bytecode into native x86 (or whatever) instructions. I
think this is all done as a user process.
Something like VMWare is trying to present an interface that is indistinguishable from the underlying hardware, which lets you run unmodified OSes and such. Because full software emulation is way too slow to make this practical (as opposed to Java bytecode, which was
designed to make it easy), VMWare installs kernel device drivers that implement a lot of the functionality. In fact, while the guest OS (the one running in the virtual machine; in your case, Linux) is running, the host OS is for all intents and purposes entirely stopped. In addition, emulating x86 on x86 can be made about as fast as it sounds. When the virtual machine is executing in user mode, VMWare doesn't do anything at all; the processor is executing along the same as it would if the guest OS were running native. VMWare only comes into play when the virtual machine switches to supervisor mode and executes kernel instructions.
(The picture gets more complicated because when I say VMWare I'm talking about something like Workstation or Server. They also have ESX Server, which works differently still, because there is no host OS.)
So while the JVM
is the reason that Java is a multi-platform language, the second part of your comment about it putting a VM below the OS isn't right. It sits entirely on top of the OS, and both the JVM and VMWare need to be ported to work on each system they want to use as host.
Minirogue wrote:Ok, my chip can run Xen. Is there any one that you would recommend in particular?
One = Linux distro or VM?
If VM, then I whole-heartedly recommend VMWare.
VirtualPC (I think) doesn't run Linux very well because of differences in how they handle kernel operations. (VirtualPC interprets instructions run while in supervisor mode; VMWare does something much more along the lines of the JVM's JIT compiler.) I'm also not sure if it's free... I think it is... I think that's what spurred the release of VMWare Server.
I haven't used Xen, but from what I understand, it's hard to set up and manage and such. Also, it's one of those systems that works a lot differently in that it doesn't sit on top of an OS; it in some sense IS the bottom-most layer. So I'm not sure how easy it would be to get it set up to work with your existing Windows installation; I would guess you would need a spare partition/hard drive, which might be difficult. Neither VirtualPC nor VMWare has that problem, because they can just a normal file as a virtual disk.
VMWare is easy to use, it's free, it works pretty darn well, and it will do what you want.
(P.S. Editing works fine for me. What happens when you try it?)