Описание тега kvm
KVM был разработан и создан Qumranet, который позже был приобретен Red Hat.
KVM - очень изящная реализация виртуализации для x86, поскольку исходный код содержал менее 10000 строк кода. Он реализован как модуль ядра и использует ряд функций ядра Linux вместо их реализации (например, ядро заботится о планировании виртуальных машин), в отличие от xen, где все эти функции нужно было позаботиться. гипервизором. Таким образом, повторное использование кода - это то, на что полагается KVM.
Ниже приведены способы, как KVM виртуализирует различные компоненты реального ПК.
Виртуализация ЦП: за виртуализацией ЦП отвечает технология Intel VT или AMD-V, а KVM добавляет связующий код для эффективного использования этих технологий. KVM загружает и сохраняет несколько регистров, когда виртуальная машина запланирована или когда она закрывается соответственно.
Виртуализация ввода-вывода: KVM выполняет виртуализацию ввода-вывода с помощью qemu, который имитирует устройства. KVM также поддерживает сквозные устройства, где виртуальная машина может напрямую обращаться к устройствам ввода-вывода с помощью IOMMU.
Виртуализация памяти: более ранняя разработка виртуализированной памяти KVM с использованием таблиц теневых страниц, которая представляет собой программный подход к виртуализации памяти. Синхронизация таблиц теневых страниц с таблицами страниц, принадлежащими ОС, требует больших затрат. Позже Intel и AMD представили свои собственные версии вложенных таблиц страниц, которые в основном представляют собой аппаратный подход к виртуализации памяти.