Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>KVM was envisioned and created by Qumranet, which was later acquired by Red Hat.</p> <p>KVM is a very neat implementation of virtualization for x86 as the original code was less than 10,000 lines of code. It is implemented as a kernel module, and uses a number of features of the Linux kernel, instead of implementing them (e.g., scheduling of virtual machines is taken care by the kernel), unlike <a href="/questions/tagged/xen" class="post-tag" title="show questions tagged &#39;xen&#39;" rel="tag">xen</a> where all these features had to be taken care of by the hypervisor. Thus code reuse is something that KVM relies upon. </p> <p>Following are the ways how KVM virtualizes various components of the real PC.</p> <p><strong>CPU Virtualization</strong>: CPU virtualization is taken care of by Intel VT or AMD-V technology, and KVM adds glue code to effectively use these technologies. KVM loads and saves a number of registers when a VM is scheduled or when it exits respectively. </p> <p><strong>I/O Virtualization</strong>: KVM does I/O virtualization with the help of <a href="/questions/tagged/qemu" class="post-tag" title="show questions tagged &#39;qemu&#39;" rel="tag">qemu</a>, which emulates devices. KVM also supports passthrough devices where the VM can directly access I/O devices using IOMMU.</p> <p><strong>Memory Virtualization</strong>: Earlier design of KVM virtualized memory using shadow page tables, which is a software only approach to virtualizing memory. There is a high cost of synchronizing the shadow page tables with the page tables belonging to OS. Later, Intel and AMD came up with their own versions of nested page tables which is mostly a hardware approach to virtualizing memory. </p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload