Virtual Machine or VM is run through a software emulation or hardware virtualization or both to run programs like that on a real physical computer. Hypervisor or Virtual Machine Monitor (VMM) is a virtualization software , which provides an environment for a virtual machine that is created. An essential feature is that virtual machine running the processes are limited by resources and abstractions provided by them.
Types of Virtual Machine
Virtual machines can be classified into two broad categories according to their functionality and their degree of equivalence to a real machine :
- System virtual machine
- Process virtual machine
System Virtual Machine
System virtual machine, also called as hardware virtual machine, allows the underlying physical machine to be multiplied across many virtual machines, each running its own operating system. A layer of software that enables virtualization is called virtual machine monitor or hypervisor. A virtual machine monitor can run either directly on the hardware or on an operating system (it is the host operating system).
---
Process Virtual Machine
The machine starts automatically when you launch the process to be executed and stops to when it ends. Its aim is to provide a runtime environment independent of the hardware platform and operating system, which hides the details of the underlying platform and allow a program to run it the same way on any platform. The currently best known example of this type of virtual machine is the Java virtual machine.
Advantages and disadvantages

Advantages of a virtual machine:
- Applications for a virtual machine running on all physical machines can be implemented on virtual machine. It can thus create architecture transparency.
- Dynamic optimization is possible.
Disadvantages of a virtual machine:
- The design of a program running on virtual machines is generally slower than the native execution of programs, which were translated specifically for the target environment.
- When using an interpreter, it provides additional indirection, which is less efficient than direct execution.
Dynamic translation at run-time (JIT) solves the most indirections and provides mostly direct execution, but the translation itself requires, until the code can be executed directly, additional costs that are incurred only in the moment of translation, but not on subsequent runs.
Usage:
- Emulation can be done to implement the functionality of a device using another unit with different features.
- Virtual machines have been used since the long to implement the multi-tasking.
- Virtualization.
- Parallel Virtual Machine is a parallel virtual machine software.
