Last Update:
Tue Apr 24 16:43:52 CEST 2007

Virtual Machines

Virtual Machines can be categorized with respect to several issues.

Layer of virtual machine/real computer communication.

  • System call trapping. All the user code runs on the real processor. System call are diverted to the virtual machine management. They are very performance effective, but are not portable to different host architecture.
  • Processor Architecture Virtualization. The entire processing is virtual (emulated). Is slower than the former but can execute code for different hardware architectures. Dynamic Code Translation techniques can speed-up the execution.

Completeness of the Virtualization.

  • Processor Virtualization only. Just the processor is virtual. All the system resources get accessed through the host operating system.
  • Partial Virtual Machine. Programs runs on the physical host CPU. Some part of the system are virtualized without booting a guest operating system.
  • Complete System Virtualization. All the architecture (Processor and Peripherals) are virtual. There is the need of a guest operating system for the virtual machine to run.

"Invasivity" on the Host Computer.

  • User-level. Can be implemented and used by using the standard user permissions.
  • Root access required. Installation requires root access on the host computer.
  • Kernel patch required. The kernel must be changed in some manner, either by a patch or by inserting modules.

User-Mode Linux

License: GPL    Status: Production

It is a project that realizes a complete system virtualization through system trapping . It has been released as a set of patches for the linux kernel that defines a new virtual "um" hardware architecture. A kernel for the "um" architecture is just an executable for the host computer that include the I-O virtualization routines as well as the kernel itself. It runs at user-level. It does not require a specific kernel support in the host machine but there is patch named skas mode for the 2.4 version of Linux to increase U-ML security and performance (to reduce the number of threads and to keep the addressing space of the emulated kernel inaccessible by the emulated tasks). The support for skas mode should be included in vanilla Linux 2.6.


License: GPL    Status: Production

It is a complete system virtualization for an Apple Macintosh architecture for Linux/ppc. It is able to run Linux and MacOS 9 and X. It uses system trapping but requires a Kernel module as it relies on direct hardware access. It is very fast and effective.


License: GPL/LGPL (emulator) MIT/BSD (PC system emulator)    Status: Beta, rapidly converging to Production

Quoting its author's web site: Qemu is a FAST! processor emulation using dynamic translation to achieve good emulation speed. Qemu is able to run just as a processor or as a Complete System Virtualizer. Running different executables it is possbile to run single executables compiled for different processor architectures in a linux environment or it is possible to start a virtual machine and boot an entire operating system. It runs on a number of different hardware architectures, it is currently able to run i386,ppc,arm and sparc executables and provides virtual machines emulating i386 and ppc based architectures. This project is very active: new ports and features are announced on daily base. It runs completely at user-level and virtualizes completely the processor architecture.


License: LGPL    Status: Production

Bochs is an historical virtual machine. It runs on several host architectures (supported OS: Linux, MacOS 9/X, Windows) where it is able to create complete system virtualization of an i386 architecture. It relies on standard emulation techniques thus it is quite slow when compared to modern virtual machines. It runs completely at user-level and virtualizes completely the processor architecture.


License: GPL    Status: Beta

It is conceptually similar to bochs but it implements a PPC architecture instead of an i386 PC. Thus it creates a complete system virtualized PPC box able to run several OSes including Linux and MacOX 9/X. It runs on several architectures but there are special performance optimizations tailored for i386 host machines. (The author says that it runs 40 times slower than the real host performance on a i386 and 500 times slower on other CPUs, but these absolute figures are not related to any well-known benchmark). For the color taxonomy it runs at user-level achieving a completely processor virtualization.


License: GPL    Status: Beta

MPS and uMPS (micro MPS) have been designed for educational purposes. Like Qemu, Bochs and PearPC, MPS is a complete virtual system of an Mips based computer (user-level, complete processor virtualization). It is a workbench for computer science students to run their experimental operating systems in a real-world consistent virtual computer while stripping off unnecessary complexities. It is mentioned here as uMPS comes (soon) with a virtual ethernet interface that can join the Virtual square world.


License: GPL    Status: Beta

View-OS: A Process with a View: it an operating system model where each process has its own view of the environment where it runs. This view can be shared among processes, if needed: it is possible to create a hierarchy of processes that share a common view. It is possible in this way to define networking, file system access, IPC (and potentially any system call) at process level. This model is modular and expandable. View-OS concepts can be implemented using partial virtual machines. UM-ViewOS is a publicly available implementation of View-OS concepts: it has been released on as GPLv2 free software. UM-ViewOS runs unmodified GNU-Linux executables, does not require any administration (root) permissions to run, runs on 2.6 Linux kernels without any need for specific patches or modules. UM-ViewOS implements View-OS as a User-Mode Partial Virtual Machine. UM-ViewOS includes also virtual networking (lwipv6), FUSE compatible virtual file system access (umfuse), FUSE/umfuse modules to mount ext2 and iso file systems. (former Ale4NET project has been included into the lwipv6 module for UM-ViewOS). This is a Partial Virtual Machine. implemented at User-level. using system trapping .
VirtualSquare is a KEAP Project

© 2004 Renzo Davoli. The Virtual Square logo is © 2004 by Sandro Pifferi (Thanks).

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. This is a copy of the license