The initial memory reservation for each domain is specified at the creation by a template file, however maximum allowable memory reservation can also be specified. Xen uses a “balloon” driver to adjust a domain’s memory usage, which controls paging. If the memory allocation decreases, the balloon will page into the allocation, while if the allocation increases, the driver will page out. Each guest OS registers it’s page tables direct with the Memory Management Unit (MMU), however the guest OS’s are restricted with read only access to the MMU. Update requests are passed to Xen via a hypercall, which then validates the requests before applying them. In comparison, VMWare operates with it’s own virtual page table, invisible to the MMU. The VMWare hypervisor traps the access to the virtual memory, validates it, then propagates the changes back and forth between it and the MMU-visible shadow page table.