Love to simultaneously run any operating system – Windows, Linux, or Unix – on your PC? Then, virtual machine is for you. NO, I don’t mean the Java virtual machine which allows you to run Java applications on any operating system (OS). I mean virtual machines that can run unmodified operating systems on top of the existing one.
So what are virtual machines or VMs? According to VMware‘s website, “A virtual machine is a computer defined in a software. It is like running a PC on your PC.” For those who are interested, a more detailed definition and classification of VM can be found here.
Unlike “multibooting” (a process of installing multiple OSes on a PC and selecting the OS at startup), virtual machines let you switch between operating systems by simply tabbing between applications and without needing to reboot. Running VMs is just like running another application on your PC. In particular, you can just run the free downloadable VMware Player from VMware, which enables Windows and Linux users to run another OS (the guest OS) on top of the existing one (the host OS). What’s more, preconfigured virtual machines called virtual appliances are readily available. You can visit the virtual appliance maketplace for a wide array of selection ranging from lightweight Linux distributions to full-pledge grid computing appliance. And a lot of stuffs are for free.
VMs are usually used by IT professionals to test applications or debug recently developed softwares. I for one am currently experimenting on the possible use of VM in deploying a program I had developed for the remote analysis of brain images obtained using magnetic resonance imaging or MRI. The program is written in the C programming language and currently runs only on Linux. Deploying the program requires some special configuration, which I think is not easy to setup for ordinary users. Moreover, most of the target users are only familiar with the Windows operating system and have very limited experience with Linux. Rewriting the program to run on Windows can make the deployment a lot easier. Unfortunately, some of the program’s components do not run under Windows. 🙁
My idea is to pre-install the program in a Linux-based virtual machine with all the needed optimization and configuration already setup. Then deploy this VM, instead of the original application, to potential Windows users. All the user needs to do is to install the VMware player. The user can then load my VM, and voila, an optimized working version of my application. Well, I have not yet successfully completed this process but there seems to be some promise :-).
Aside from this, VMs can also be used in some other ways. For ordinary users, VM can be used for safe Internet browsing. In these times when a simple visit to a malicious site can compromise your PC, surfing using VM makes a lot of sense. The idea is to use the browser installed in the VM rather than the one installed directly on your PC. If you hit a malicious site, only your VM is compromised, not the host OS. You can just reset your VM and your problem is gone. Similarly, you can use this approach to setup a VM with a child-friendly browser installed to provide a safe browsing experience for your children.
If you are a web developer/designer, VM is also for you. You can use VMs to see how your site looks like in another browser on another operating system. For instance, you may want to know how your site behaves for users using Internet Explorer or Firefox on Linux or Windows. Instead of buying another computer to host these OSes, you can just use VMs and run them from your PC.
I think VMs are also useful for Internet cafe operators. VM can provide some kind of protection to their PCs. By confining their Internet users to work only within the VM environment, they can isolate the host OS from any threats while their users surf the Internet. They can even allow their users to install applications to the VM, and thus provide a more flexible user experience. The VM can then be configured to discard any changes to its initial state when it terminates.
Finally, let me end by noting that there are trade-offs when running VMs. One critical issue is the effect on the system’s performance. But if you are just running simple applications on your VM such as a browser, then I think this will not be an issue. Enjoy!