VIRTUAL MACHINES
Virtual machine is a software implementation or emulation of a physical machine that runs various operating systems and application on a host machine. The virtual machine is actually a computer file that mimics the function of the physical machine otherwise referred to as the image of the host machine. Thus a virtual machine uses software instead of hardware to run programs and deploy applications using the resources of the physical or host machine resources (such as memory, CPU, network interface, hard disk storage etc.) thereby enabling the whole system to run multiple machines virtually with different operating systems on a single machine.
Virtual machines use virtualization, which is the process of creating software based or virtual versions of the physical machine resources or applications. Virtualization relies on hypervisor technology. The hypervisor also known as a virtual machine monitor (VMM) is a piece of software that creates and manages virtual machines (VM) on a physical host machine. Hypervisors play a crucial role in the virtualization process by allowing multiple Virtual machines (VMs) to run on a single physical host machine. Virtual machines run their operating systems and applications independently while sharing the same physical resources from the host machine which the hypervisor manages.
There are several types of virtual machines and the main ones are as follows; system virtual machines, process virtual machines and language virtual machines.
System virtual machines also called full virtualization virtual machines are designed to provide the functionality required to execute entire operating system. Thus they provide a complete self-contained environment for running an operating system and application. Examples include VMware, virtual box and Hyper-V.
Process virtual machines are designed to execute computer programs in a platform-independent environment. Thus, allowing the execution of software applications and operating systems written for different CPU architecture. They run a single process or application providing a sandbox environment for execution. Examples include java virtual machine (JVM) and common language runtime (CLR).
Language virtual machines provide a runtime environment for specific programming language. Examples include JVM and .NET common language runtime (CLR).
The advantages of virtual machines are as follows; virtual machines allow multiple operating systems to run on a physical machine thus improving the hardware utilization. Virtualization decrease costs by reducing the need of physical hardware systems. Virtual machines use efficient hardware which lowers the quantities of hardware with the associated maintenance and operational cost, power and cooling demand. Virtual machines provide a sandboxed environment for running applications thereby improving security and stability. Virtual machines are portable across different hardware platforms making it easy to move virtual machines from one machines platform to another. Virtual machines can run different operating systems and applications thus providing flexibility in development and testing environment.
The disadvantages of virtual machines are as follows; virtual machines introduce performance overhead due to the additional layer of abstraction. Virtual machines require significant resources from the CPU, memory and storage to run efficiently. Virtual machines can be complex to run, thus they require very specialized knowledge and tools to effectively manage and operate them, virtual machines can introduce security risks if not properly configured and managed.
The applications of virtual machines are very widespread especially in the computer industry where they are used in data centers to improve server utilization and reduce hardware costs. Cloud computing and large computer network to provide scalable and on demand computing resources. They are also used to run legacy systems and their application to provide a flexible and isolated environment for development and testing.
The future of virtual machines depends on the development and advances in computer hardware and software. Its effected improved hardware designs and novel programming methods will improve the performance and efficiency of virtual machines. Containerization technologies like Dockers will provide a lightweight alternative to virtual machines. Increase adoption of virtual machines by various industries such as healthcare, finance, education and so on will not only reduce cost but also increase the network thereby creating opportunities for collaborative use of hardware and software resources on the network for the benefit of all.
SOURCES:
- Virtual machines: versatile platforms for systems and processes by Jim Smith and Ravi Nair.
- Understanding virtual machines by Amit Singh.
- Virtualization essentials by Matthew Purtnoy.
- Virtualization: from desktop to the enterprise by Chris Wolf and Erick M. Halter.
- Java virtual machine by Troy Downingand Jon Mayer.