Virtualization and Paravirtualization

Broadly speaking, virtualization technology can support “pure” execution of guest applications, wherein all guest program instructions are handled by the VM platform: privileged instructions are handled by the hypervisor and common ones run natively at full speed. Alternately, guest program code can be pre-processed (at build-time, load-time, etc.) to remove direct invocation of privileged instructions and insert explicit calls to hypervisor APIs (“hypercalls”). This latter approach streamlines execution by reducing run-time overhead and is termed para-virtualization.