Полная виртуализация против паравиртуализации
Я студент бакалавриата и плохо знаю английский (пожалуйста, простите меня..)
На этой схеме я понял, что
Полная виртуализация ввода-вывода
«Перехватывать и эмулировать» -> гипервизор должен «перехватывать» привилегированные инструкции драйвера виртуального устройства (поскольку они немодифицированы) и выполнять двоичную трансляцию.
но в случае паравиртуализации ввода-вывода ,
существуют интерфейсный драйвер и внутренний драйвер (которые модифицированы для использования гипервызовов), чтобы они могли напрямую обращаться к физическому оборудованию.
Но почему паравиртуализация ввода-вывода требует эмуляции устройства?
Что я неправильно понял?
Спасибо.
1 ответ
в классической или обычной (или той, которую вы назвали полной) виртуализацией устройств, существующее в реальности устройство эмулируется для виртуализированной среды. Те же собственные драйверы, которые могут управлять реальным устройством, запускаются в виртуализированной среде, и гипервизору необходимо выполнять необходимые функции, чтобы собственный драйвер считал, что устройство, которым он управляет, работает успешно. Реальная физическая среда может иметь или не иметь такого устройства. При паравиртуализации драйверы знают, что они работают в виртуализированной среде. Они «знают», что управляют виртуальной эмуляцией. Часто это проектируется как интерфейсный драйвер, работающий в виртуальной среде, и серверная часть, работающая на гипервизоре, но это не является обязательным. Паравиртуализация просто означает, что драйверы знают о виртуализации. Это может проявляться в том, что драйверы используют инструменты или методы, которые были бы недоступны для них в реальной физической среде (например, использование общей памяти для связи между внешними и внутренними драйверами). Это также обычно проявляется в оптимизации и упрощении драйвера, поскольку ему не приходится иметь дело с реальным оборудованием (поэтому нет сложных регистров, особенностей PCI, DMA, вопросов аппаратной синхронизации и т. д.).