Emulation software makes something out of nothing
- 11 November, 2004 15:27
Virtualization solutions such as VMware ESX Server use emulation technologies to trick operating systems into seeing hardware that isn't there. But emulation is also used as a stand-alone technology across a broad range of industries. AMD shipped an emulator to get developers working on Opteron/Athlon 64 technology well in advance of the chip's availability. Palmsource, Nokia, and Microsoft bundle device emulators with their mobile development environments, not only to speed development but also to allow coders to validate their software on mobile platforms they don't own. Intel and Transmeta rely on low-level emulation to run 32-bit x86 software on VLIW (very long instruction word) processors.
Typically, one of the best ways to experiment with cutting-edge technologies is to find an open source project that meets your needs. Unfortunately, emulation is an extremely demanding discipline to pursue, as the software requires constant attention in order to adapt to evolving operating systems and PC hardware. Thus, open source virtualization and emulation projects tend to have short life spans, and only a very small number of projects are active in this category.
Bochs emulates an x86 CPU down to the instruction level, but it is most often used to host multiple virtual Linux, BSD, and Windows sessions on one machine. It's portable to non-x86 platforms -- the Mac stands out -- and handles a wide range of guest OSes. Bochs is uniquely powerful, and it has the educational benefit of being a transparent PC -- if you don't mind running what feels like the world's slowest x86 system.
The Xen project is a promising virtualization host developed by the University of Cambridge. It uses a modified x86 Linux kernel to host multiple instances of x86 guest OSes, primarily Linux. At a very basic level, Xen's approach matches that taken by VMware (Profile, Products, Articles) for ESX Serve, but one distinct difference is that it requires parts of each guest OS to be rewritten to run on top of the Xen. Xen is an extremely active project and is worth watching closely.
UML ( User Mode Linux) has been evolving slowly, but it will get a boost from its inclusion in SLES (Suse Linux Enterprise Server) Version 9. UML permits the operation of multiple virtual instances of Linux but with a twist: Each Linux instance is effectively a user application and cannot exceed the policies and rights associated with the user that launched it. It's the ultimate sandbox.
There are lots of other virtualization and blended virtualization/emulation projects in the wild. Even though few of these projects are truly ready for mission-critical use, it's an area worth investigating before you spring for a commercial solution.