Это попытка ответить на мой собственный вопрос.
Виртуализация системы: понимание виртуализации ввода-вывода и роли гипервизора
Виртуализация
Виртуализация какконцепция позволяет сосуществовать нескольким / разнородным приложениям на одном и том же базовом оборудовании, не зная друг друга.
Например, полнофункциональные операционные системы, такие как Windows, Linux, Symbian и т. д. вместе с их приложениями могутсосуществовать на той же платформе.Все вычислительные ресурсы виртуализированы.
Это означает, что ни одна из вышеупомянутых машин не имеет доступа к физическим ресурсам.Единственным объектом, имеющим доступ к физическим ресурсам, является программа, известная как Virtual Machine Monitor (также известный как Hypervisor).
Теперь это важно.Пожалуйста, прочитайте и перечитайте внимательно.
Гипервизор предоставляет виртуальную среду для каждой из вышеперечисленных машин.Поскольку эти машины не обращаются к физическому оборудованию, НО виртуализированному оборудованию, они известны как виртуальные машины.
Например, ядро Windows может захотеть запустить физический таймер (системный ресурс).Предположим, что таймер является отображенным в память IO.Ядро Windows выдает серию инструкций загрузки / сохранения по адресам таймера.В не виртуализированной среде эти загрузка / хранение привели бы к программированию аппаратного обеспечения таймера.
Однако в виртуализированной среде такой доступ к физическим ресурсам на основе загрузки / хранения приведет к прерыванию / отказу.Ловушка обрабатывается гипервизором.Гипервизор знает, что Windows пыталась запрограммировать таймер.Гипервизор поддерживает структуры данных Timer для каждой виртуальной машины.В этом случае гипервизор обновляет структуру данных таймера, созданную для Windows.Затем он программирует реальный таймер.Любое прерывание, сгенерированное таймером, сначала обрабатывается гипервизором.Структуры данных виртуальных машин обновляются и вызываются подпрограммы обработки прерываний последней.
Короче говоря, Windows сделала все, что сделала бы в среде без виртуализации.В этом случае его действия привели к НЕ обновлению реального системного ресурса, а обновлению виртуальных ресурсов (структуры данных выше).
Таким образом, все виртуальные машины думают, что они получают доступ к базовому оборудованию;В действительности им неизвестно, что все обращения к физическому оборудованию осуществляются гипервизором.
Все, что описано выше, является полной / классической виртуализацией.Большинство современных процессоров непригодны для классической виртуализации.Ловушка / ошибка не распространяется на все инструкции.Так что гипервизор легко обходит на современных устройствах.
Вот здесь и возникает паравиртуализация.Чувствительные инструкции в исходном коде виртуальных машин заменяются вызовом гипервизора.Приведенный выше фрагмент загрузки / сохранения может быть заменен вызовом, например
Hypervisor_Service(Timer Start, Windows, 10ms);
EMULATION
Эмуляция - это тема, связанная с виртуализацией.Представьте себе сценарий, в котором программа, изначально скомпилированная для ARM, предназначена для работы на процессоре ATMEL.ЦП ATMEL запускает программу эмулятора, которая интерпретирует каждую инструкцию ARM и эмулирует необходимые действия на платформе ATMEL.Таким образом, эмулятор предоставляет виртуализированную среду.
В этом случае виртуализация системных ресурсов НЕ выполняется через модель прерывания и выполнения.