Изисквания за виртуализация на Попек и Голдбърг

Изискванията за виртуализация на Попек и Голдбърг са набор от условия, които са достатъчни една компютърна архитектура да поддържа ефективно системна виртуализация. Те са въведени от Gerald J. Pope и Robert P. Goldberg в тяхна статия от 1974 Формални изисквания за виртуализация на трето поколение архитектури. Въпреки че тези изисквания са получени чрез опростени предположения, те все още представляват удобен начин за определяне дали дадена компютърна архитектура поддържа ефективна виртуализация и да предоставят насоки за проектиране на виртуализирани компютърни архитектури.

Дефиниция на монитор на виртуална машина — хипервайзор (VMM, hypervisor)

Системните виртуални машини могат да виртуализират пълен набор от хардуерни ресурси, включително процесор (или процесори), ресурси за памет и съхранение и периферни устройства. Мониторът (VMM, наречен също hypervisor) е част от софтуера, който осигурява абстракция на виртуална машина. Съществуват три важни свойства на средата, създадена от VMM:

В терминологията на Popek и Goldberg, една VMM трябва да има и трите свойства. В терминологията, използвана в справочника на Smith и Nair (2005), VMM обикновено се приемат че отговарят на свойствата за еквивалентност и контрол на ресурсите, а тези, които освен това отговарят и на свойството за изпълнение, се наричат​​ ефективни VMMs.

Popek и Goldberg описват характеристиките, които трябва да притежава наборът от инструкции (Instruction Set Architecture – ISA) на физическата машина, за да задвижи VMM с горните три свойства. Техният анализ извлича такива характеристики с помощта на модел на архитектури от трето поколение (например, IBM 360, Honeywell 6000, DEC PDP-10), който е все пак достатъчно общ, за да бъде разширен до съвременните машини. Този модел включва процесор, който работи или в системен, или потребителски режим, и има достъп до линейна, постоянно адресируема памет. Предполага се, че подгрупа на набора от инструкции е достъпна само, когато е в системен режим и че паметта се адресира относително в зависимост от регистър на преместванията. I/O и прекъсванията не са моделирани.

Теореми за виртуализация

За да извлекат своите виртуализационни теореми, които дават достатъчни (а не необходими) условия за виртуализация, Popek и Goldberg въвеждат класификация на инструкциите на ISA в три различни групи:

Основният резултат от анализа на Popek и Goldberg може да бъде изразен, както следва:

Теорема 1. За всеки конвенционален компютър от трето поколение (third-generation computer), ефективен VMM може да се конструира, ако наборът от чувствителни инструкции за този компютър е подгрупа на набора от привилегировани инструкции.

Интуитивно, теоремата гласи, че, за да се изгради VMM, е достатъчно всички инструкции, които могат да засегнат правилното функциониране на VMM (чувствителни инструкции), винаги прекъсват и предават контрола към VMM. Това гарантира свойството за ресурсен контрол. Непривилегированите инструкции трябва вместо това да се изпълнят нативно (т.е. ефективно). Запазването на свойството за еквивалентност също следва от това.

Тази теорема също осигурява проста техника за създаване на VMM, наречена trap-and-emulate виртуализация, от скоро наричана класическа виртуализация: защото всички чувствителни инструкции работят добре, всичко, което VMM трябва да направи, е да прихваща и емулира всяка една от тях.

Свързан с това проблем е, че се извличат достатъчни условия за рекурсивна виртуализация, което означава, че може да се създадат условия, под които може да се стартира VMM, така че да работи върху копие на себе си. Popek и Goldberg представят следните (достатъчни) условия:

Теорема 2. Обикновен компютър от трето поколение (third-generation computer) може да се виртуализира рекурсивно, ако

Някои архитектури като тези без хардуерна помощ x86 не отговарят на тези условия, така че те не могат да бъдат виртуализирани по класическия начин. Но архитектурите все още може да бъдат напълно виртуализирани (в x86 случая— CPU и MMU нивата) чрез използване на различни техники като двоичен превод, който заменя чувствителните инструкции, които не генерират прекъсвания , които понякога се наричат решаващи инструкции. Това допълнително обработване, обаче, прави VMM по-малко ефективна на теория. , но също така и хардуерните капани имат значителни разходи по изпълнението.. Една добре настроена кешираща система за двоичен превод може да достигне сравнима производителност и го прави в случая на x86 двоичен превод спрямо първото поколение на x86 хардуерна помощ, което просто направи чувствителните инструкции (лесни за прихващане)trappable. Ефективно, това дава една теорема с различни условия по достатъчността .

Обработка на критичните инструкции

Условията за виртуализация, изразени в теорема 1, могат да бъдат намалени за сметка на ефективността. Изградени са VMM за невиртуализиращ набор от инструкции (ISA) (в смисъла на Popek и Goldberg).

Виртуализацията на такива архитектури изисква правилна обработка на „критичните инструкции”, т.е. чувствителни, но непривилегировани инструкции. Един подход, известен като „пачване“ (patching), усвоява техники, обикновено използвани в динамичното прекомпилиране (dynamic recompilation): критичните инструкции са открити по време на изпълнение и се прекъсват във VMM. Предложени са различни механизми като кеширане на кода за емулация или виртуализация с помощта на хардуер (hardware assists), за да направят процеса на „пачване” по-ефективен. Един различен подход е този на паравиртуализацията (paravirtualization), който изисква да се модифицират („пренесат”) гост-операционните системи преди да заработят във виртуалната среда.

Разделът представя няколко съответни архитектури и как те се отнасят към изискванията за виртуализация.

PDP-10 архитектурата има няколко инструкции, които са чувствителни (променят или заявяват режима на процесора), но не и привилегировани. Тези инструкции съхраняват или възстановяват кода, съдържащ USER или IOT битове.

Всички чувствителни инструкции в System/370 са привилегировани: отговарят на изискванията за виртуализация.

Motorola MC68000 има само една непривилегирована чувствителна инструкция:

IA-32 (x86)

Наборът от IA-32 инструкции на процесора Intel Pentium съдържа 17 чувствителни, непривилегировани инструкции. Те могат да се разделят в две групи:

Чувствителни регистрови инструкции: четене или изменяне на чувствителни регистри и/или места на памет като часови регистър или регистър на прекъсванията:

Инструкции за системата за защита: отнасят се към система за защита на съхранението и системата за преместване на памет или адрес:

Въвеждането на наборите от инструкции AMD-V и Intel VT-x през 2005 позволи на х86 процесорите да отговорят на изискванията за виртуализация на Popek и Goldberg

IA-64

„Хиперпривилегирован” режим за архитектурата UltraSPARC е посочен в „UltraSPARC Architecture 2005” . Дефинира се платформата sun4v , която е надмножество на платформата sun4u, но е съвместима със спецификацията SPARC v9 Level-1.

Производителността на практика

Изискването за ефективност в дефиницията на Popek и Goldberg за VMM се отнася единствено до изпълнението на непривилегировани инструкции, които трябва да се изпълнят нативно. Това отличава един VMM от по-общ клас софтуер за емулация на хардуер. Дори и в архитектура, която отговаря на изискванията на Popek и Goldberg, производителността на виртуалната машина може да се различава съществено от реалния хардуер. Ранните експерименти, извършени на System/370 (която отговаря на формалните изисквания на Теорема 1), показват, че производителността на виртуалната машина може да падне до 21% от производителността на нативната машина по някои показатели. Цената за прекъсване и емулиране на привилегированите инструкции във VMM може да бъде значителна. Това накара инженерите на IBM да въведат редица помощен хардуер (hardware assists), което почти удвои производителността на виртуалните машини System/370 Помощният хардуер се е добавял на няколко етапа. Накрая е имало над 100 помощни устройства на последните модели System/370.

Един от основните движещи фактори за развитие на помощния хардуер за System/370 беше самата виртуална памет. Когато гостът беше операционна система, която сама по себе си имплементира виртуална памет, дори непривилегированите инструкции можеха да имат по-дълго време за изпълнение – санкция, наложена от изискването за достъп до таблици за преобразуване, което не се използва при нативното изпълнение. (виж shadow page tables).

Беше ли полезна тази статия?

Оцени я!

Среден рейтинг / 5. Брой гласове:

Ако намираш статията за полезна...

Последвай ни в социалните мрежи!

Съжаляваме, че тази статия не ти беше полезна!

Помогни ни да променим това!