Full vs Paravirtualization
Full Virtualization and Paravirtualization Defined
Paravirtualization is a virtualization method in which the guest operating system is aware that it runs on a hypervisor and cooperates with it, usually through special drivers. Full virtualization, by contrast, presents an unmodified guest with a complete virtual copy of the hardware, so the guest does not know it is virtualized.
Both approaches solve the same problem: letting several operating systems share one physical machine. They differ in how much work the guest does for itself and how much the hypervisor must simulate. Early hypervisors such as Xen made paravirtualization a central idea.
How Each Method Handles Guest Requests
Full virtualization. The hypervisor emulates the devices a guest expects, such as a network card or disk controller. When a guest runs a privileged instruction, the hypervisor intercepts it and performs the action on the guest's behalf. This works with any operating system, but each emulated step adds overhead.
Paravirtualization. The guest uses drivers that know they are talking to a hypervisor. Instead of emulating a physical disk controller, the driver sends a request in a format the hypervisor can handle directly. Fewer steps are needed, so the work is cheaper, but the guest must support this approach.
Why Modern Hypervisors Combine Both Approaches
Most modern virtual machines use both ideas at once. The processor runs an unmodified guest at near-native speed, which is full virtualization, while the guest's disk and network drivers are paravirtual. Hardware support in modern processors made this combination fast enough for most workloads, as described in the article on hardware assisted virtualization.
The result is practical. A guest runs without modification, and the devices it uses are the faster paravirtual kind. Hosting providers often choose this combination because it supports a wide range of guest systems with good performance.
Frequently asked questions
What is virtio?
Virtio is a standard family of paravirtualized device drivers used by many hypervisors, including KVM. A guest with virtio drivers sends disk and network requests in a form the hypervisor handles efficiently, which usually improves speed. Most current Linux distributions include these drivers, while other systems may need them installed separately.
Does paravirtualization require changing the operating system?
It can. Classic paravirtualization modified the guest kernel, which limited which systems could run. Today the common form is a set of drivers added to an unmodified operating system. The guest needs the right drivers, but it does not need a rewritten kernel.