Virtualization
Single piece of hardware running multiple OS.
For OS to run, it needs to run on preveliged mode.
Emulated Virtualization
Hypervisor,the software that runs on preveliged mode, comes in.
To put it into architecture, it looks like the following:
App1 App2 App3
OS1 OS2 OS3
-h y p e r v i s o r—
cpu/mem network devices
Hypervisor feeds fake information (cpu/memory/disk) to the os1,2,3. And OS treat them as real and will try to do privileged operation directly on its ‘fake’ hardware. However, any privilege operation OS request, hypervisor intercept it and translate it into binary (aka Binary Translation).
But this translation process takes long and have negative effect on the performance.
So here comes Para-Virtualization:
Instead of OS requesting directly on the hardware, they call hypervisor for any privileged operation.
Hardware Assited Virtualization:
Hardware itself aware of virtualization. CPU contains specific instruction and capabilities so hypervisor can configure and suport these virutalization. Hardware knows what to expect providing least amount of performance degradation. Hardware still has to talk to hypervisor though.
It flows like the following:
App1 App2 App3
HARD <—-OS1 OS2 OS3 |—<-> h y p e r v i s o r // where hypervisor goes back and forth with harddrive
cpu/mem network devices
SR-IOV
PCIe device is aware of virtualization. So single PCIe device looks like multiple device to OS without having hypervisor translate them.
This feature is enabled in EC2 under “enhanced networking”.
Leave a comment