Full virtualization can run any piece of software on
a virtual machine. Paravirtualization assumes that
the guest software has been written to run on the
virtual machine. Paravirtualized guest software does function
calls using the hypervisor's API, just as as a
user process does calls using an operating systems API.