Virtualization refers to the abstraction of computer resources, which means creating a a logical or virtual computer resource which does not exists physically. Virtualization can be done at many levels or in other words any computer resource can be virtualized, but the most common practice is called Hardware or Platform virtualization.
Our hardware is theoretically built to run a single operating system. Therefore a single machine is configured to run one OS on it. In case of server machines with high specifications this results in a severe under usage of its computing capabilities, e.g. A machine built just for the purpose of Directory services. This resulted in the concept of hardware virtualization, which creates several standalone "virtual" machines on a single physical machine, The software installed on these Virtual Machines cannot distinguish whether its installed on a physical machine or a virtual one. hence making it possible to share its hardware resources with multiple virtual machines which are working in isolation and this process is called Hardware or Platform Virtualization
May be you still wondering what the hell I am talking about, OK lets take an everyday example, You work in an office and your job responsibilities include keeping record of Accounts, HR and Sales. One way is to have a record book for each. Now your miserly accountant is complaining about you spending too much money on these books and also points to the fact that you hardly use you HR book. To keep his mouth shut you decide to a buy a bigger book with dividers in it. So now you have one single book but by using dividers you have created section for all the different types of records you keep. so actually you have virtualized your record book and created 3 Virtual books out of one actual book. One more thing to notice out of this analogy is that the size of the virtual books is changeable based on your needs and it is also dependent on the actual size of the actual book. Similarly when you create virtual machines the resources assigned to a virtual machine is dependent on the physical machine resources, Hence the more powerful physical machine you have, the more powerful Virtual machines there may be.
Hardware virtualization has many advantages such as Scalability, Ease of deployment, Sandboxing, etc more on this can be found on the internet, but the focus of this article on the two High level virtualization models and its pros and cons.
1. Application based Hardware Virtualization
In an application based hardware virtualization a base operating system is installed on the hardware and a virtualization application is installed on the base operating system, along with other applications (Optional). This virtualization application which in the figure above we have called Virtual Machine Manage is responsible of creating and managing Virtual machines. This model is commonly used more in Development, testing or research scenarios in which you use your machine for some dedicated virtual machines along with your normal usage. and where the performance of the virtual machine is not that critical.
The biggest advantage of this model is its ease of deployment and cost as most of the Virtual Machine managers are available freely, secondly your machine is not solely dedicated for your virtual machines and you can use it as a normal PC, if and when you want. Thirdly you directly interact with your host PC without the requirement of any intermediate machine to connect to your host machine.
The biggest disadvantage of this model is its performance overhead, as the host machine is running a base operating system, this OS has its own processing/memory footprint, as this OS is made not only to run the Virtual machine manager but also other applications and services, so this ends up in consuming a good chunk of processing and memory from the host machine. This brings us to the second virtualization model.
2. OS based Hardware Virtualization
This model is frequently used in live production scenarios, where there are dedicated servers for virtualization and the sole purpose of these machines is to have multiple virtual machines running on it, In this case the Base OS is a very basic Hypervisor Operating system which has a very low Processing/Memory footprint as it offers only the virtualization related services and nothing else. This ensures the major chunk of the processing and memory goes to the hosted virtual machines and the OS consumes as little as possible.
The biggest advantage is the performance of the virtual machines. The drawback of this approach is the host OS does not provide any other services, but this can be overcome by creating a virtual machine for your needs, another drawback is in most cases these server machines are connected or managed through remote services as the Host OS does not provide comprehensive interface for its management, so this might result in additional hardware or terminal to access the Virtual machines, This model is best used in data center scenarios.
Lots of products and technologies are available for both the models which you can easily search for. Virtualization has lots of potential and if intelligently used can save you some serious money.