Virtualization:
Microsoft acquired Connectix Corporation, a provider of virtualization software for
    Windows and Macintosh based computing, in early 2003. In late 2003, EMC announced its
    plans to acquire VMware for $635 million. Shortly afterwards, VERITAS announced that it
    was acquiring an application virtualization company called Ejascent for $59 million. Sun
    and Hewlett-Packard have been working hard in recent times to improve their
    virtualization technologies. IBM has long been a pioneer in the area of virtual machines,
    and virtualization is an important part of IBM's many offerings. There has been a surge in
    academic research in this area lately. This umbrella of technologies, in its various
    connotations and offshoots, is hot, yet again.
    The purpose of this document can be informally stated as follows: if you were to use
    virtualization in a an endeavor (research or otherwise), here are some things to look at.
A Loose Definition
    Let us define "virtualization" in as all-encompassing a manner as possible for the purpose
    of this discussion: virtualization is a framework or methodology of dividing the resources
    of a computer into multiple execution environments, by applying one or more concepts or
    technologies such as hardware and software partitioning, time-sharing, partial or
    complete machine simulation, emulation, quality of service, and many others.
    Note that this definition is rather loose, and includes concepts such as quality of service,
    which, even though being a separate field of study, is often used alongside virtualization.
    Often, such technologies come together in intricate ways to form interesting systems, one
    of whose properties is virtualization. In other words, the concept of virtualization is
    related to, or more appropriately synergistic with various paradigms. Consider the multi-
    programming paradigm: applications on *nix systems (actually almost all modern
    systems) run within a virtual machine model of some kind.
    Since this document is an informal, non-pedantic overview of virtualization and how it is
    used, it is more appropriate not to strictly categorize the systems that we discuss.
    Even though we defined it as such, the term "virtualization" is not always used to imply
    partitioning - breaking something down into multiple entities. Here is an example of its
    different (intuitively opposite) connotation: you can take N disks, and make them appear
    as one (logical) disk through a virtualization layer.
    Grid computing enables the "virtualization" (ad hoc provisioning, on-demand deployment,
    decentralized, etc.) of distributed computing: IT resources such as storage, bandwidth,
    CPU cycles, ...
    PVM (Parallel Virtual Machine) is a software package that permits a heterogeneous
    collection of Unix and/or Windows computers hooked together by a network to be used as
    a single large parallel computer. PVM is widely used in distributed computing.
    Colloquially speaking, "virtualization abstracts out things."
Why Virtualization: A List of Reasons
    Following are some (possibly overlapping) representative reasons for and benefits of
    virtualization:
      Virtual machines can be used to consolidate the workloads of several under-utilized
    servers to fewer machines, perhaps a single machine (server consolidation). Related
    benefits (perceived or real, but often cited by vendors) are savings on hardware,
    environmental costs, management, and administration of the server infrastructure.
       The need to run legacy applications is served well by virtual machines. A legacy
    application might simply not run on newer hardware and/or operating systems. Even if it
    does, if may under-utilize the server, so as above, it makes sense to consolidate several
    applications. This may be difficult without virtualization as such applications are usually
    not written to co-exist within a single execution environment (consider applications with
    hard-coded System V IPC keys, as a trivial example).
       Virtual machines can be used to provide secure, isolated sandboxes for running
    untrusted applications. You could even create such an execution environment dynamically
    - on the fly - as you download something from the Internet and run it. You can think of
    creative schemes, such as those involving address obfuscation. Virtualization is an
    important concept in building secure computing platforms.
       Virtual machines can be used to create operating systems, or execution environments
    with resource limits, and given the right schedulers, resource guarantees. Partitioning
    usually goes hand-in-hand with quality of service in the creation of QoS-enabled
    operating systems.
       Virtual machines can provide the illusion of hardware, or hardware configuration that
    you do not have (such as SCSI devices, multiple processors, ...) Virtualization can also be
    used to simulate networks of independent computers.
       Virtual machines can be used to run multiple operating systems simultaneously:
    different versions, or even entirely different systems, which can be on hot standby. Some
    such systems may be hard or impossible to run on newer real hardware.
       Virtual machines allow for powerful debugging and performance monitoring. You can
    put such tools in the virtual machine monitor, for example. Operating systems can be
    debugged without losing productivity, or setting up more complicated debugging
    scenarios.
       Virtual machines can isolate what they run, so they provide fault and error
    containment. You can inject faults proactively into software to study its subsequent
    behavior.
       Virtual machines make software easier to migrate, thus aiding application and system
    mobility.
       You can treat application suites as appliances by "packaging" and running each in a
    virtual machine.
       Virtual machines are great tools for research and academic experiments. Since they
    provide isolation, they are safer to work with. They encapsulate the entire state of a
    running system: you can save the state, examine it, modify it, reload it, and so on. The
    state also provides an abstraction of the workload being run.
       Virtualization can enable existing operating systems to run on shared memory
    multiprocessors.
       Virtual machines can be used to create arbitrary test scenarios, and can lead to some
    very imaginative, effective quality assurance.
       Virtualization can be used to retrofit new features in existing operating systems
    without "too much" work.
       Virtualization can make tasks such as system migration, backup, and recovery easier
    and more manageable.
       Virtualization can be an effective means of providing binary compatibility.
       Virtualization on commodity hardware has been popular in co-located hosting. Many of
    the above benefits make such hosting secure, cost-effective, and appealing in general.
       Virtualization is fun.
      Plenty of other reasons .