A virtual machine (VM) is a software program or operating system that not only exhibits the behavior of a separate computer, but is also capable of performing tasks such as running applications and programs like a separate computer.
A VM runs on a physical hardware machine usually referred to as the ‘host machine’. However, the virtual machine provides the end-user with a platform that behaves like a separate computer and is completely isolated from the host machine.
VMs are created within a virtualization layer that sits between the hardware and the virtual machine. This virtualization layer is called a hypervisor or virtual machine monitor (VMM). It allows the virtual machine to share resources such as physical memory, processors and devices with the host machine.
There are different types of virtual machines and they perform different roles. The main VM types are:
System Virtual Machines
System VMs provide a complete system platform that supports the execution of a complete operating system (OS). System VMs are the traditional VMs that provide a substitute for a real machine. They provide functionality needed to execute an entire OS.
Some examples of system VMs include:
- Process VMs – These VMs are designed to run a single program such as a Java virtual machine.
- Hypervisor VMs – These are VMs that manage and control other VMs on the host machine. The hypervisor allows multiple VMs to run on a single host system. Examples include VMware ESXi, Microsoft Hyper-V, and Xen.
Process Virtual Machines
Process VMs are designed to run a single program such as a Java virtual machine. Process VMs provide a platform-independent programming environment that abstracts away details of the underlying hardware or operating system, and allows program execution in an environment that mimics the one in which the programming language is used.
Some examples include the Java virtual machine (JVM) and the .NET CLR.
Advantages of Process VMs:
- Portability – They can run on any platform that has an appropriate virtual machine implementation.
- Security – They isolate untrusted code from the underlying OS.
- Interpretation – The intermediate language (bytecode) format can be dynamically translated into native machine code at runtime for improved performance.
Hypervisor Virtual Machines
These are VMs that manage and control other VMs on the host machine. The hypervisor allows multiple VMs to run on a single host system. Examples include:
- VMware ESXi – An enterprise-level bare-metal hypervisor used to create and run virtual machines and containers.
- Microsoft Hyper-V – A native hypervisor-based virtualization product developed by Microsoft for x86-64 systems.
- Xen – An open-source type-1 hypervisor that enables multiple guest operating systems to execute on the same computer hardware concurrently.
Advantages of Hypervisor VMs:
- Increased hardware utilization – Hypervisors allow multiple VMs to run on the same physical server leading to better utilisation of available compute resources.
- Isolation – VMs are isolated from each other as if they were on separate physical machines. This provides better security and prevents conflicts between applications.
- Migration – Entire VMs can migrate between physical servers for load balancing, disaster recovery, or hardware maintenance.
- Consolidation – Reduces number of servers and other data center infrastructure needed by consolidating multiple workloads.
Application Virtual Machines
Application VMs are a software implementation of a physical machine that executes application software programs. This type provides an environment similar to the one in which the software would normally run. The key benefit is application isolation and containment.
Some examples include:
- Database VMs – Provide an optimized virtualized environment specifically for running database software like SQL Server and Oracle.
- Web server VMs – Used to run and serve web applications in isolation from other apps and services. Popular with web hosts and cloud platforms.
- Game emulator VMs – Provide a sandboxed environment to emulate video game consoles and allow games to run on other devices. Examples are Nintendo Wii and PlayStation emulators.
Advantages of Application VMs:
- Application isolation – Errors, crashes, and conflicts with other apps are contained.
- Pre-configured deployment – Appliance VMs package the app with a guest OS, libraries, configuration and can be quickly deployed.
- Scalability – Easily create multiple copies of the VM to scale out an application.
- Compatibility – Provides a consistent environment for older or legacy applications to run reliably.
High-Level Virtual Machines
Unlike system VMs that provide a complete platform, high-level VMs are focused on running a single programming language. They provide their own custom services like thread scheduling, garbage collection, etc tailored for the language.
Some examples include the Java virtual machine (JVM), Python’s CPython VM, and the Common Language Runtime (CLR) for .NET.
Advantages of High-Level VMs:
- Portability – Program can run on any platform that has VM support for that language.
- Managed execution – Programming language safety and memory management features help prevent crashes and errors.
- Optimized performance – VMs utilize Just-In-Time (JIT) compilation to translate bytecode into optimized machine code at runtime.
- Tool ecosystem – Language tools like debuggers and profilers integrate with the VM to analyses code execution.
Specialized System Virtual Machines
These provide platform virtualization capabilities with additional customized optimizations for specific use cases like high performance computing, gaming, data analytics, etc.
Some examples include:
- NVIDIA vComputeServer – A hypervisor specialized for GPU virtualization that allows sharing NVIDIA GPUs between VMs.
- VMware Photon Platform – Optimized to deploy and run modern cloud-native applications in containers and Kubernetes environments.
- Amazon EC2 Gaming instances – EC2 instance types optimized and tuned for running high-performance video games.
Advantages of Specialized System VMs:
- Optimized performance – Customized for high-throughput, low latency workloads like big data analytics, HPC, gaming, etc.
- Improved utilization – Features like GPU sharing allow resources to be effectively utilized for specialized workloads.
- Differentiated services – Provide value-added capabilities via VM customization and tight integration with supporting infrastructure.
- Workload isolation – Critical workloads get guaranteed resources and isolated access to specialized hardware features.
- Virtual machines provide an isolated software environment that mimics a physical computer system.
- Different VM types serve specific computational needs – system VMs run full OSes while process VMs execute a single program.
- Hypervisor VMs manage and provision hardware resources for other guest VMs running on a host.
- Application VMs provide optimized and isolated environments to run specific software programs and workloads.
- High-level VMs like JVMs offer managed execution of bytecode for cross-platform compatibility.
- Specialized system VMs tune the virtualized environment for optimal performance on workloads like HPC, machine learning, gaming etc.
Virtual machines are a vital component of computing today that provide configurable software environments isolated from the underlying physical infrastructure. The different VM types offer varied capabilities tailored for executing a wide range of computational workloads.
System VMs deliver complete platform virtualization, while process VMs focus on cross-platform program execution. Hypervisors enable efficient sharing of hardware resources through virtualization. Application and high-level VMs provide sandboxed and managed environments optimized for specific programs and languages respectively. Specialized system VMs further tune the virtualized environment for classes of workloads like data analytics, graphics/media processing etc.
Understanding these VM types and their best use cases allows effectively leveraging virtualization to improve compute resource utilization, workload consolidation, availability and scalability. With capabilities advancing via virtualization-based security, distributed resource management, container integration and composable architectures, VMs will continue to play a key role in next-generation computing platforms.
Frequently Asked Questions
Q: What is the main difference between system VMs and process VMs?
A: System VMs provide a complete platform that can run an entire operating system. Process VMs are designed to execute a single process or program such as a Java Virtual Machine.
Q: Which VM type allows running multiple virtual machines on a single physical host?
A: Hypervisor VMs (or Type 1 VMs) allow multiple guest VMs to run on the same host. The hypervisor manages sharing resources between the VMs.
Q: What are the benefits of using application VMs?
A: Application VMs provide optimized, isolated environments for specific programs. This improves compatibility, scalability and resilience of applications.
Q: Can multiple virtual machines share GPUs on a host machine?
A: Yes, technologies like NVIDIA vGPU and AMD MxGPU allow virtualized and shared GPU access for VMs to accelerate graphics, media processing, machine learning workloads.
Q: How do high-level VMs like the JVM provide cross-platform portability?
A: They execute intermediate bytecode that is translated at runtime into native machine code. This abstraction allows platform-independent execution.
Q: Which VM type is best for running containerized applications and Kubernetes?
A: Specialized system VMs like VMware Photon OS and Amazon EC2 instances optimized for containers are ideal for deploying containerized apps at scale.
Q: Which VM type is designed to emulate real gaming console hardware?
A: Game emulator VMs implement hardware and software to mimic gaming consoles, allowing games built for those platforms to run on other devices.
Q: Can multiple specialized system VMs access accelerated hardware like FPGAs simultaneously?
A: Yes, using SR-IOV and other virtualization techniques, FPGAs and accelerators can be shared between multiple VMs while isolating critical workloads.
Q: What are some differences between virtual machines and containers?
A: Containers provide operating system level virtualization while VMs virtualize hardware. Containers share the host OS kernel and are more lightweight.
Q: Are VMs less secure than containers because they run a full OS?
A: Not necessarily – modern VMs offer strong isolation between guest VMs. With micro-segmentation and minimal attack surfaces, VMs can also be very secure.
Q: Can virtual machines provide computational high availability and fault tolerance?
A: Yes, capabilities like live migration, fault tolerant VMs, and availability zones allow VMs to deliver highly reliable and resilient application platforms.
Q: What are some key advantages of using virtual machines?
A: Key advantages include hardware consolidation, isolation between workloads, easy migration and portability, scalability, and providing optimized environments for specific applications.