TwoOStwo

twoOStwo was a commercial software product developed by Parallels Software Studio (prior to its acquisition by SWsoft). The workstation software consisted of a virtual machine suite for Intel x86-compatible computers which allowed the creation and execution of multiple x86 virtual computers simultaneously. Each virtual machine instance could execute its own guest operating system including Windows, Linux, OS/2 and BSD variants.

Description
The computer and operating system instance that executes the twoOStwo process is referred to as the host machine. Instances of operating systems running inside a virtual machine are referred to as guest virtual machines. Like an emulator, twoOStwo provides a completely virtualized set of hardware to the guest operating system; for example, irrespective of make and model of the physical network adapter, the guest machine will see a Novell/Eagle NE2000 or Realtek RTL8029(AS) network adapter. twoOStwo virtualizes all devices within the virtual environment, including the video adapter, network adapter, and hard disk adapters. It also provides pass-through drivers for serial and parallel devices.

Because all guest virtual machines use the same hardware drivers irrespective of the actual hardware on the host computer, virtual machine instances are highly portable between computers. For example, a running virtual machine can be stopped, copied to another physical computer, and started.

Implementation
Conventional emulators like Bochs emulate the microprocessor, executing each guest CPU instruction by calling a software subroutine on the host machine that simulates the function of that CPU instruction. This level of abstraction allows the guest machine to run on host machines with a different type of microprocessor, but is also very slow.

A more efficient approach consists in software debugger technique. Some parts of the code are executed natively on the real processor; on 'bad' instructions, there are software interrupts that break execution of the guest operating system code and that particular instruction is emulated.

twoOStwo, as well as VMware Workstation, Virtual PC for Windows and QEMU with the kqemu add-on, take an even more optimized approach and run code directly when this is possible. This is the case for user mode and virtual 8086 mode code on x86.

The drawback is that the guest OS has to be compatible with the host CPU. So unlike an emulator, one cannot use twoOStwo to run classic Mac OS/PowerPC software on an Intel x86 processor. Another drawback is that it is not normally possible to efficiently nest virtual machines. Finally, although twoOStwo virtual machines run in user mode, twoOStwo itself requires installing various device drivers in the host operating system.

Features
Besides bridging to network adapters, CD-ROM readers and hard disk drives, twoOStwo also provides the ability to simulate some hardware. For example, an ISO image can be mounted as a CDROM and .hdd files can be mounted as hard disks.