Сложности внедрения виртуализации в архитектуру x86

Вспомним определение гипервизоров и виртуальных машин: гипервизоры применяют широко известный принцип добавления уровня косвенного обращения (adding a level of indirection) к области компьютерного оборудования.
Они предоставляют абстракцию виртуальных машин: нескольких копий основного оборудования, на каждой из которых запущен независимый экземпляр операционной системы. Виртуальные машины изолированы от других виртуальных машин, каждая из них появляется в виде дубликата основного оборудования и в идеале работает с той же скоростью, что и реальная машина. VMware адаптировала эти основные атрибуты виртуальной машины к целевой платформе на базе x86 следующим образом:

♦ Совместимость. Понятие «практически идентичная среда» означает, что любую операционную систему под x86 и все ее приложения можно будет запускать в качестве виртуальной машины без модификаций. Гипервизор необходим для обеспечения достаточной совместимости на уровне оборудования таким образом, чтобы пользователи могли работать на любой операционной системе (вплоть до обновленной и исправленной версии), которую они пожелали установить на конкретной виртуальной машине, без каких-либо ограничений.

♦ Производительность. Издержки от применения гипервизора должны быть довольно низкими, чтобы виртуальную машину можно было использовать в качестве первичной рабочей среды. Разработчики VMware поставили себе цель добиться работы с большой нагрузкой практически на обычных скоростях, а в худшем случае запускать программы на самых последних процессорах с производительностью, аналогичной той, с которой они выполнялись на обычном оборудовании на ближайшем предыдущем поколении процессоров. Такая постановка задачи строилась на наблюдении, что подавляющая часть программного обеспечения под x86 не разрабатывалась для работы только на самых последних поколениях центральных процессоров.

♦ Изолированность. Гипервизор должен обеспечить изолированность виртуальной машины, не выстраивая никаких предположений насчет запускаемых внутри нее программ. То есть гипервизор должен иметь полный контроль над ресурсами. Программное обеспечение, работающее внутри виртуальных машин, должно быть лишено возможности любого доступа, позволяющего ему вмешиваться в работу гипервизора. Кроме того, гипервизор должен гарантировать закрытость всех данных, не принадлежащих виртуальной машине. Гипервизор должен предполагать, что гостевая операционная система может быть инфицирована неизвестным вредоносным кодом (что сегодня вызывает намного большие опасения, чем во времена универсальных машин).

Между этими тремя требованиями возникало неизбежное противоречие.

Например, полная совместимость в конкретных областях могла привести к чрезмерному влиянию на производительность, в таких случаях разработчики компании VMware вынуждены были идти на компромисс. Но при этом ими исключались любые компромиссы, способные поставить под угрозу изолированность или сделать гипервизор уязвимым для атак вредоносного кода гостевой операционной системы. В целом, возникли четыре основные проблемы:

1. Архитектура x86 была невиртуализируемой. Она содержала чувствительные к виртуализации непривилегированные инструкции, которые нарушали выработанные Попеком и Голдбергом критерии для строгой виртуализации. Например, инструкция POPF имеет разную (а также неперехватываемую) семантику в зависимости от того, разрешено текущей программе выключать прерывания или нет. Это исключает традиционный подход к виртуализации, использующий перехват и эмуляцию. Даже инженеры из компании Intel были убеждены, что их процессоры практически невозможно виртуализировать.

2. Архитектура x86 была слишком сложна. Архитектура x86 была широко известной своей сложностью CISC-архитектурой, включая унаследованную поддержку на многие десятилетия обратной совместимости. На протяжении многих лет были внедрены четыре основных режима операций (реальный, защищенный, v8086 и управления системой), каждый из которых по-разному включал модель аппаратной сегментации, механизмы страничной организации памяти, защитные кольца и функции безопасности (например, шлюзы вызова).

3. У машин x86 были разные периферийные устройства. Хотя у процессоров x86 было всего два основных производителя, персональные компьютеры в течение всего времени выпуска могли содержать огромное разнообразие плат расширения и устройств и у каждого были собственные драйверы устройств от конкретных производителей. Виртуализировать все эти периферийные устройства было невозможно. Последствия носили двойственный характер: они относились как к внешнему интерфейсу (виртуальному оборудованию, видимому в виртуальных машинах), так и к внутреннему интерфейсу (реальному оборудованию, которым гипервизор должен был иметь возможность управлять) периферийных устройств.

4. Нужна была модель, не требующая особого пользовательского опыта. Классические гипервизоры устанавливались на производстве аналогично прошивкам, имеющимся в современных компьютерах. Поскольку VMware была новой компанией, ее пользователям приходилось добавлять гипервизоры к уже существующим системам. Чтобы стимулировать внедрение своего продукта, компании VMware понадобилась модель доставки программного обеспечения, не требующая особого опыта для установки.

7.12.4.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Сложности внедрения виртуализации в архитектуру x86:

  1. Таненбаум Э.. Архитектура компьютера. 5-е изд, 2007
  2. Степанов А. Н.. Архитектура вычислительных систем и компьютерных сетей, 2007
  3. Архитектура
  4. 3. Проекты совместного внедрения
  5. Молитва о возрождении на Земле Священной Архитектуры
  6. СЛОЖНОСТЬ КОГНИТИВНАЯ
  7. Откровение Мастеров. Архитектура – наука о Времени
  8. Внедрение
  9. 5.6.3. Сложность - первое условие прозренний
  10. Внедрение интервью.
  11. СЛОЖНОСТЬ
  12. Сложность структуры организации.
  13. Стадия непосредственного внедрения (освоения) новшества.
  14. Сложность интровертного поведения
  15. 2.5. Проблемы внедрения результатов системного анализа