Memory virtualization explained
VMkernel (the hypervisor used by ESXi) manages all machine memory. It dedicates part of this managed machine memory for its own use, while the rest is available for use by virtual machines.
VMkernel creates a contiguous addressable memory space for a running virtual machine. The memory space has the same properties as the virtual memory address space presented to applications by the guest operating system. This memory space enables VMkernel to run multiple VMs simultaneously while protecting the memory of each VM from being accessed by other VMs.
In vSphere, three layers of memory are present:
- Guest operating system virtual memory – presented to applications by the guest OS.
- Guest operating system physical memory – presented to the VM by VMkernel.
- ESXi host machine memory – provides a contiguous addressable memory space for use by the VM.
The following picture illustrates the concept (image source: VMware):