-
Process Virtualization:
- Provides a platform-independent programming environment.
- Example: JVM (Java Virtual Machine), .NET CLR.
- Abstracts the underlying OS and hardware at the process level.
-
System Virtualization:
-
Simulates a complete physical machine, allowing OS-level virtualization.
-
Types:
- Bare-metal (Type 1) hypervisor: Runs directly on hardware.
- Hosted (Type 2) hypervisor: Runs on a host OS.
-
Why we have JVM but not CVM (C++ Virtual Machine)? Java was designed in the 1990s with the motto “Write Once, Run Anywhere.” To enable cross-platform compatibility, Java code is compiled into an intermediate form called bytecode, which is executed by the Java Virtual Machine (JVM). The JVM abstracts away OS and hardware specifics, enabling Java applications to run identically on any platform with a compatible JVM implementation. C++, however, was designed with performance, low-level hardware access, and efficiency in mind. It is a systems programming language, intended to be compiled directly into native machine code, targeting specific architectures. Its goal was to be a “better C” — not platform independence — hence, no need for a virtual machine like a "CVM".Although some alternatives like LLVM present there.
-
Type 1 Hypervisor (Bare-metal):
- Runs directly on physical hardware.
- More efficient, used in data centers and enterprise environments.
- Examples: VMware ESXi, Microsoft Hyper-V, Xen, KVM (with QEMU).
-
Type 2 Hypervisor (Hosted):
- Runs on a host operating system.
- Easier to install and use, but less efficient.
- Examples: VMware Workstation, Oracle VirtualBox, Parallels Desktop.
-
Full Virtualization:
- Emulates complete hardware.
- Guest OS runs unmodified.
- Example: VMware ESXi, VirtualBox.
-
Paravirtualization:
- Guest OS is aware it's being virtualized and collaborates with the hypervisor.
- Requires modified guest OS.
- Example: Xen (in paravirtual mode).
-
Hardware-Assisted Virtualization:
- Uses CPU features (Intel VT-x, AMD-V) to improve performance and isolation.
- Allows unmodified guest OS to run efficiently.
- Supported by both Type 1 and Type 2 hypervisors.
-
Software Virtualization:
- Abstracts software environments or entire apps.
- Example: JVM, containers (e.g., Docker).
-
Memory Virtualization:
- Abstracts physical memory into virtual memory.
- Allows efficient, secure, and isolated memory(RAM) usage.
- Examples : ceph,
-
Storage Virtualization:
- Combines multiple storage devices into a single, logical storage pool.
- Examples: SAN, NAS, virtual disks.
-
Network Virtualization:
- Abstracts physical network resources.
- Examples: VLANs, SDN (Software Defined Networking), virtual NICs, Cilium.
-
Server Virtualization:
- Multiple virtual servers run on one physical server.
- Achieved via hypervisors or containerization.
-
Desktop Virtualization:
- Hosts desktop environments on centralized servers.
- Accessed remotely by clients.
- Example: VDI (Virtual Desktop Infrastructure), Citrix.