Operating systems are one of the most common types of virtualization technologies.
The operating system can be thought of as one virtual machine implemented in software used to abstract the computer’s hardware resources. Software applications that reside and execute within an operating system use the operating system’s facilities to access hardware instead of directly accessing the hardware, usually through a module called a device driver.
Some programming frameworks include a special runtime environment designed to run on top of the operating system. Software written against the framework runs on top of the operating system as well but also strongly relies on the runtime environment (virtual machines) to perform its tasks. This type of virtualization does not provide a complete execution environment and relies on an operating system and its resources to do its job. Examples include the Microsoft .NET Framework and Sun’s Java among many others.
Virtualization technology is available in many forms to meet different sets of requirements. Some of the virtualization technologies described can be used effectively together such as operating systems and software partitioning or software partitioning and resource partitioning while others should never be used together as in the case of using a software partitioning system within a soft partition of an existing software partitioning system.