После небольшого чтения я достиг определенного уровня понимания, описанного в:
https://stackoverflow.com/a/13045437/1163200
Я воспроизвожу его полностью здесь:
Это попытка ответить на мой собственный вопрос.
Виртуализация системы: понимание виртуализации ввода-вывода и роли гипервизора
Виртуализация
Виртуализация как концепция позволяет множеству/разнообразным приложениям сосуществовать на одном базовом оборудовании, не зная друг друга.
Например, полноценные операционные системы, такие как Windows, Linux, Symbian и т. д., вместе со своими приложениями могут сосуществовать на одной платформе. Все вычислительные ресурсы виртуализированы.
Это означает, что ни одна из вышеупомянутых машин не имеет доступа к физическим ресурсам. Единственный объект, имеющий доступ к физическим ресурсам, — это программа, известная как Virtual Machine Monitor (она же Hypervisor).
Теперь это важно. Пожалуйста, читайте и перечитывайте внимательно.
Гипервизор предоставляет виртуализированную среду для каждой из вышеперечисленных машин. Поскольку эти машины имеют доступ НЕ к физическому оборудованию, НО к виртуализированному оборудованию, они известны как виртуальные машины.
Например, ядро Windows может захотеть запустить физический таймер (системный ресурс). Предположим, что таймер представляет собой ввод-вывод с отображением памяти. Ядро Windows выдает серию инструкций загрузки/сохранения для адресов таймера. В невиртуализированной среде эти операции загрузки/сохранения привели бы к программированию оборудования таймера.
Однако в виртуализированной среде такой доступ к физическим ресурсам на основе загрузки/сохранения приведет к ловушке/сбою. Ловушка обрабатывается гипервизором. Гипервизор знает, что Windows пыталась запрограммировать таймер. Гипервизор поддерживает структуры данных Timer для каждой виртуальной машины. В этом случае гипервизор обновляет структуру данных таймера, которую он создал для Windows. Затем он программирует реальный таймер. Любое прерывание, сгенерированное таймером, сначала обрабатывается гипервизором. Обновляются структуры данных виртуальных машин и вызываются процедуры обслуживания прерываний последних.
Короче говоря, Windows сделала все, что сделала бы в невиртуализованной среде. В этом случае его действия привели к обновлению НЕ реального системного ресурса, а обновлению виртуальных ресурсов (структуры данных выше).
Таким образом, все виртуальные машины думают, что они обращаются к базовому оборудованию; На самом деле им неизвестно, что весь доступ к физическому оборудованию осуществляется через гипервизор.
Все описанное выше — это полная/классическая виртуализация. Большинство современных процессоров не подходят для классической виртуализации. Ловушка/ошибка не относится ко всем инструкциям. Так что гипервизор легко обходится на современных устройствах.
Вот где рождается паравиртуализация. Конфиденциальные инструкции в исходном коде виртуальных машин заменены вызовом гипервизора. Приведенный выше фрагмент загрузки/сохранения может быть заменен вызовом, например
Hypervisor_Service(Timer Start, Windows, 10ms);
ЭМУЛЯЦИЯ
Эмуляция — это тема, связанная с виртуализацией. Представьте себе сценарий, в котором программа, изначально скомпилированная для ARM, предназначена для работы на процессоре ATMEL. ЦП ATMEL запускает программу-эмулятор, которая интерпретирует каждую инструкцию ARM и эмулирует необходимые действия на платформе ATMEL. Таким образом, эмулятор обеспечивает виртуализированную среду.
В этом случае виртуализация системных ресурсов НЕ выполняется по модели trap and execute.
person
Raj
schedule
24.10.2012