Требования к виртуализации Попека и Голдберга - Popek and Goldberg virtualization requirements
В Требования к виртуализации Попека и Голдберга - набор условий, достаточных для того, чтобы компьютерная архитектура поддерживала систему виртуализация эффективно. Их представил Джеральд Дж. Попек и Роберт П. Голдберг в статье 1974 г. «Формальные требования к виртуализируемым архитектурам третьего поколения».[1] Несмотря на то, что требования основаны на упрощающих допущениях, они по-прежнему представляют собой удобный способ определения того, поддерживает ли компьютерная архитектура эффективную виртуализацию, и предоставляют руководящие принципы для проектирования виртуализированных компьютерных архитектур.
Определение VMM
Система виртуальные машины способны виртуализировать полный набор аппаратных ресурсов, включая процессор (или процессоры), память и ресурсы хранения, а также периферийные устройства. А монитор виртуальной машины (VMM, также называемый гипервизор ) - это часть программного обеспечения, которая обеспечивает абстракцию виртуальной машины. При анализе среды, созданной VMM, есть три интересных свойства:[2]
- Эквивалентность / верность
- Программа, работающая под управлением VMM, должна демонстрировать поведение, по существу идентичное тому, которое демонстрируется при запуске непосредственно на эквивалентной машине.
- Контроль ресурсов / Безопасность
- VMM должен полностью контролировать виртуализированные ресурсы.
- Эффективность / Производительность
- Статистически преобладающая часть машинных инструкций должна выполняться без вмешательства VMM.
По терминологии Попека и Голдберга, VMM должен представлять все три свойства. В терминологии, используемой в справочнике Smith and Nair (2005), обычно предполагается, что VMM удовлетворяют свойствам эквивалентности и управления ресурсами, а те, которые дополнительно соответствуют свойству производительности, называются эффективные VMM.[3]
Попек и Голдберг описывают характеристики, которые архитектура набора команд (ISA) физической машины должна обладать для запуска VMM, которые обладают вышеуказанными свойствами. Их анализ выводит такие характеристики с использованием модели «архитектур третьего поколения» (например, IBM 360, Honeywell 6000, DEC PDP-10), то есть тем не менее, достаточно общий, чтобы его можно было распространить на современные машины. Эта модель включает в себя процессор, который работает в системном или пользовательском режиме и имеет доступ к линейной памяти с равномерной адресацией. Предполагается, что подмножество набора инструкций доступно только в системном режиме и что память адресуется относительно регистра перемещения. Ввод / вывод и прерывания не моделируются.
Теоремы виртуализации
Чтобы вывести свои теоремы виртуализации, которые дают достаточные (но не необходимые) условия для виртуализации, Попек и Голдберг вводят классификацию некоторых инструкций ISA на 3 разные группы:
- Привилегированные инструкции
- Те что ловушка если процессор в пользовательский режим и не ловить, если он находится в системном режиме (режим супервизора ).
- Управляйте конфиденциальными инструкциями
- Те, которые пытаются изменить конфигурацию ресурсов в системе.
- Инструкции, касающиеся поведения
- Те, чье поведение или результат зависят от конфигурации ресурсов (содержимого регистра перемещения или режима процессора).
Главный результат анализа Попека и Голдберга можно выразить следующим образом.
Теорема 1.. Для любого обычного компьютер третьего поколения, эффективный VMM может быть сконструирован, если набор конфиденциальных инструкций для этого компьютера является подмножеством набора привилегированных инструкций.
Интуитивно теорема утверждает, что для построения VMM достаточно, чтобы все инструкции, которые могут повлиять на правильное функционирование VMM (конфиденциальные инструкции), всегда перехватывали и передавали управление VMM. Это гарантирует свойство управления ресурсами. Вместо этого непривилегированные инструкции должны выполняться изначально (т. Е. Эффективно). Также следует сохранение свойства эквивалентности.
Эта теорема также предоставляет простой метод реализации VMM, называемый ловушка и эмуляция виртуализации, совсем недавно назывался классическая виртуализация: поскольку все конфиденциальные инструкции хорошо себя ведут, все, что нужно сделать VMM, - это перехватить и подражать каждой из них.[4][5]
С этим связана проблема получения достаточных условий для рекурсивной виртуализации, то есть условий, при которых может быть построен VMM, который может работать на своей копии. Попек и Гольдберг представляют следующие (достаточные) условия.
Теорема 2.. Обычный компьютер третьего поколения рекурсивно виртуализируется, если:
- это виртуализуемый и
- для него можно построить VMM без каких-либо временных зависимостей.
Некоторые архитектуры, например, без аппаратной поддержки x86, не соответствуют этим условиям, поэтому их нельзя виртуализировать классическим способом. Но архитектуры все еще могут быть полностью виртуализированы (в случае x86, что означает на уровне ЦП и MMU) с помощью различных методов, таких как двоичная трансляция, которая заменяет чувствительные инструкции, которые не генерируют ловушки,[4] которые иногда называют критическими инструкциями. Однако эта дополнительная обработка теоретически делает VMM менее эффективным,[5] но аппаратные ловушки также имеют немаловажную стоимость производительности.[нужна цитата ] Хорошо настроенная система кэширующей двоичной трансляции может обеспечить сопоставимую производительность, и это достигается в случае двоичной трансляции x86 по сравнению с аппаратной поддержкой x86 первого поколения, которая просто делала уязвимые инструкции перехватываемыми.[6] Фактически это дает теорему с различными условиями достаточности.[нужна цитата ]
Теорема 3.. А гибридный VMM может быть сконструирован для любой машины третьего поколения, в которой набор чувствительных к пользователю инструкций является подмножеством набора привилегированных инструкций:
Обработка важных инструкций
Условия виртуализации ISA, выраженные в теореме 1, могут быть ослаблены за счет свойства эффективности. VMM для невиртуализируемых ISA (в смысле Попека и Голдберга) создавались регулярно.
Виртуализация таких архитектур требует правильного обращения с важные инструкции, т.е. чувствительные, но непривилегированные инструкции. Один подход, известный как исправление, использует методы, обычно используемые в динамическая перекомпиляция: критические инструкции обнаруживаются во время выполнения и заменяются ловушкой в VMM. Различные механизмы, такие как кеширование кода эмуляции или аппаратная помощь, были предложены, чтобы сделать процесс исправления более эффективным. Другой подход - это подход паравиртуализация, что требует изменения гостевых операционных систем (портирован) перед запуском в виртуальной среде.
Наборы инструкций распространенных архитектур
В этом разделе представлены некоторые соответствующие архитектуры и их отношение к требованиям виртуализации.
PDP-10
В PDP-10 В архитектуре есть несколько инструкций, которые чувствительны (изменяют или запрашивают режим процессора), но не являются привилегированными.[7] Эти инструкции сохраняют или восстанавливают коды условий, содержащие биты USER или IOT:
- JSR: перейти к подпрограмме
- JSP: переход и сохранение счетчика программ
- PUSHJ: толкайся и прыгай
- JRST: прыгай и восстанавливайся
Система / 370
Все конфиденциальные инструкции в Система / 370 являются привилегированными: удовлетворяет требованиям виртуализации.[8]
Motorola MC68000
В Motorola MC68000 имеет единственную непривилегированную конфиденциальную инструкцию:
- ПЕРЕМЕЩЕНИЕ из SR
Эта инструкция важна, потому что она позволяет получить доступ ко всему регистру состояния, который включает не только коды состояния но также бит пользователя / супервизора, уровень прерывания и контроль трассировки. У большинства более поздних членов семьи, начиная с MC68010 команда MOVE from SR была сделана привилегированной, и была предоставлена новая инструкция MOVE from CCR, чтобы разрешить доступ только к регистру кода условия.[9][10]
IA-32 (x86)
В IA-32 набор инструкций Pentium Процессор содержит 18 конфиденциальных непривилегированных инструкций.[11] Их можно разделить на две группы:
- Инструкции для чувствительных регистров: чтение или изменение чувствительных регистров или участков памяти, таких как регистр часов или регистры прерывания:
- SGDT, SIDT, SLDT
- SMSW
- ПУШФ, ПОПФ
- Инструкции системы защиты: ссылка на систему защиты хранилища, память или систему перемещения адресов:
- LAR, LSL, VERR, VERW
- Поп
- ТОЛКАТЬ
- ЗВОНИТЕ ДАЛЬНО, JMP ДАЛЬНО, ВНУТРЕННИЙ n, RETF
- STR
- MOV (сегментные регистры)
Введение AMD-V и Intel VT-x Наборы команд в 2005 году позволяют процессорам x86 соответствовать требованиям виртуализации Popek и Goldberg.
IA-64
Усилия, необходимые для поддержки виртуализации на IA-64 Архитектура описана в статье Магенхеймера и Кристиана 2000 года.[12]
SPARC
"Сверхпривилегированный" режим для UltraSPARC архитектура была указана в Архитектура UltraSPARC 2005.'[13] Он определяет sun4v Платформа[14] который представляет собой супернабор sun4u платформа, но по-прежнему соответствует SPARC v9 Level-1[15] Технические характеристики.
PowerPC
Все конфиденциальные инструкции в PowerPC набор инструкций является привилегированным.[16][17]
Производительность на практике
Требование эффективности в определении VMM, данное Попеком и Голдбергом, касается только выполнения непривилегированных инструкций, которые должны выполняться изначально. Это то, что отличает VMM от более общего класса оборудования. подражание программного обеспечения. К сожалению, даже в архитектуре, отвечающей требованиям Попека и Голдберга, производительность виртуальной машины может значительно отличаться от реального оборудования. Ранние эксперименты, проведенные на System / 370 (которая соответствует формальным требованиям теоремы 1), показали, что производительность виртуальной машины может составлять всего 21% от собственной машины в некоторых тестах. Стоимость перехвата и эмуляции привилегированных инструкций в VMM может быть значительной. Это побудило инженеров IBM представить ряд аппаратные средства, что примерно вдвое увеличило производительность виртуальных машин System / 370.[18] Голевые передачи добавлялись в несколько этапов. В итоге на последних моделях System / 370 было сделано более 100 передач.[19]
Одним из основных факторов развития аппаратных ассистентов для System / 370 была сама виртуальная память. Когда в качестве гостя использовалась операционная система, которая сама реализовывала виртуальную память, даже непривилегированные инструкции могли испытывать более длительное время выполнения - штраф, налагаемый требованием доступа к таблицам трансляции, не используемым в собственном исполнении (см. таблицы теневых страниц ).[20]
Рекомендации
- ^ Попек, Г. Дж.; Гольдберг, Р. П. (июль 1974 г.). «Формальные требования к виртуализируемым архитектурам третьего поколения». Коммуникации ACM. 17 (7): 412–421. Дои:10.1145/361011.361073.
- ^ Рожье Диттнер, Дэвид Рул, Лучшая чертова книга по виртуализации серверов, Syngress, 2007, г. ISBN 1-59749-217-5, п. 19
- ^ Смит и Наир, стр. 387
- ^ а б Адамс и Агесен, 2006, стр. 2-3.
- ^ а б Смит и Наир, стр. 391
- ^ Адамс и Агесен, стр. 1 и 5
- ^ С. В. Галлей (1969). «Виртуальные машины PDP-10». Proc. ACM SIGARCH-SIGOPS Семинар по виртуальным компьютерным системам. С. 30–34.
- ^ Смит и Наир, стр. 395
- ^ Руководство пользователя 8- / 16-32-разрядного микропроцессора M68000, девятое издание. Феникс, Аризона, США: Motorola, Inc. 1993.
- ^ Справочное руководство для программистов семейства Motorola M68000. Феникс, Аризона, США: Motorola, Inc., 1992.
- ^ Джон Скотт Робин и Синтия Э. Ирвин (2000). «Анализ способности Intel Pentium поддерживать безопасный монитор виртуальных машин». Proc. 9-й симпозиум по безопасности USENIX.
- ^ Дэниел Дж. Магенхаймер и Томас В. Кристиан (2000). «vBlades: оптимизированная паравиртуализация для семейства процессоров Itanium». Proc. 3-й симпозиум по исследованиям и технологиям виртуальных машин. USENIX. С. 73–82.
- ^ Уивер, Дэвид (17 мая 2007 г.). Архитектура UltraSPARC 2005: Одна архитектура .... Несколько инновационных реализаций (DraftD0.9) (PDF). Санта-Клара, Калифорния, США: Sun Microsystems, Inc. Архивировано из оригинал (PDF) 19 февраля 2009 г.
- ^ Sun Microsystems, Inc. (24 января 2006 г.). Спецификация виртуальной машины UltraSPARC (PDF). Санта-Клара, Калифорния, США. Архивировано из оригинал (PDF) на 2007-09-27.
- ^ Уивер, Дэвид Л .; Том Жермонд (1994). Руководство по архитектуре SPARC: версия 9. Сан-Хосе, Калифорния, США: SPARC International, Inc. ISBN 0-13-825001-4.
- ^ http://www.pagetable.com/?p=15
- ^ https://www.cs.cmu.edu/~410-s07/lectures/L38_Virtualization.pdf
- ^ Смит и Наир, стр. 415-416 и 426
- ^ Резинка, стр. 535
- ^ Резинка, стр. 533
- Примечания
- Смит, Джеймс; Рави Наир (2005). Виртуальные машины. Морган Кауфманн. ISBN 1-55860-910-5.
- Адамс, Кейт; Агесен, Оле (21–25 октября 2006 г.). «Сравнение программных и аппаратных средств виртуализации x86» (PDF). Труды Международной конференции по архитектурной поддержке языков программирования и операционных систем, Сан-Хосе, Калифорния, США, 2006 г.. ACM 1-59593-451-0 / 06/0010. Получено 2006-12-22.
- П. Х. Гум, Расширенная архитектура System / 370: средства для виртуальных машин, IBM J. Res. Dev., Vol. 27, № 6, ноябрь 1983 г., стр. 530–544