Смекни!
smekni.com

Технології віртуалізації: вчора, сьогодні, завтра (стр. 5 из 8)

У частині обладнання VirtualPC і Virtual Server імітують один і той же «стандартний комп'ютер» з процесором Pentium II (з підтримкою MMX), що працює на чіпсеті Intel 440BX, з відеокартою S3 Trio 64 PCI (з 4 Mb відеопам'яті), BIOS від American Megatrends (AMI), звуковою картою Creative Sound Blaster 16 PnP (Virtual Server її не підтримує), і мережною картою DEC 21041 / 21040. Конфігурація хоч і старенька, але вельми поширена в свій час, а тому має дуже непогану підтримку з боку програмного забезпечення.


2. Віртуалізація сьогодні і завтра: Intel VT і AMD «Pacifica»

Корпорація Intel пішла досить прямолінійнім шляхом, просто випустив «мінімально необхідну» латочку до x86. Повна назва «заплатки» - Intel Virtualization Techology for x86 (VT-x); Одночасно була випущено аналогічна віртуалізаційніх «технологія» для процесорів Intel Itanium (VT-i). Втім, розглядаті останню технологію ми не будемо, оскількі по суті своїй вона практично повністю аналогічна VT-x. Нагадаємо, що раніше дана технологія була відома під кодовими іменамі Vanderpool (для персональних комп'ютерів) і Silvervale (для серверів).

Що ж зробила Intel? Досить нетрівіальну, Хоча і напрошуються річ. Розробник архітектури IA-32 просто ввела в своїх процесора СПЕЦІАЛЬНИЙ «режим виконання віртуальної машини» (Virtual Machine eXecution mode, VMX), призначений спеціально для віртуалізаційніх ПЗ (Virtual Machine Manager, VMM), і визначена для ЦЬОГО режиму Кілька Ключовий «віртуалізаційніх» інструкцій, таких як, пріміром, «створити віртуальний комп'ютер» і «запустіті віртуальний комп'ютер». Власне цей самий «віртуальний комп'ютер» в VT-x опісується спеціальної структурою під назв VMCS (Virtual Machine Control Structure) і по суті своїй є невелика ділянкою фізичної оператівної пам'яті, що зберігають мінімально необхідні Дані для запуску гостьової операційної системи, а такоже Дані, необхідні для безпечного виходить з режиму роботи гостьової ОС, і Деякі налаштування, пов'язані з Керування цією віртуальною машиною.

Програміст практично вручну створює цю структуру, повністю опісує необхідній Йому віртуальний комп'ютер та його Властивості, ПІСЛЯ чого «завантажує» Її в СПЕЦІАЛЬНИЙ апаратний регістр «поточної віртуальної машини». Потім програміст може «запустіті» свіжоствореній віртуальну машину спеціальною інструкцією.


Схема 7. Віртуалізація з використанням VT-x.

Запущена Віртуальна машина працює на звичайних апаратних ресурсах комп'ютера (зазначених VMM в опісі віртуальної машини) і для запущеного на ній програмного забезпечення практично нічим НЕ відрізняється від звічайної «фізічною» машини. Але на відміну від «Звичайний» режиму, в цю віртуальну машину можна вставляті як завгодно багато «закладок», ЯКІ будуть переріваті Її виконання, передавальних управління тому до VMM, Який буде вручну імітуваті ту чи іншу подію, або виконання тієї або іншої Інструкції. Які саме події будуть перекідатіся для «ручної обробки» VMM, визначається Тільки самим програмістом, але ЇХ в будь-якому випадку Навіть Більше, Ніж Необхідно для реалізації як завгодно складної віртуальної машини, аж до точної імітації Зовсім іншого процесора. Пріміром, проблемною у звичайно випадках операція читання-запису регістра CR3 в VT-x просто призведе до того, що процесор на секундочку призупинили гостьова ОС, вікліче VMM, Який програмно сімітірует результат Її виконання (не віконуючі справжня інструкцію MOV to / from CR3 з апаратний регістром, а підмінівші Її читанням-записом звичайно шматочка оператівної пам'яті), ПІСЛЯ чого відновіть виконання гостьовій ОС, яка «каверзи» Навіть не відчує.

При бажанні можна Навіть вручну «підкручування» Лічильник тактів процесора і Свідчення системного таймера, Щоб у гостьовій ОС не виникла сумнівів непотрібніх, з приводу того, з чого це раптом Деякі Інструкції на даному «процесорі» виконуються так довго. Можна Навіть спробувати один-в-один зімітуваті AMD Athlon XP на Intel Pentium 4 - так, що програмне забезпечення «Гостьовий» операційної системи не буде і здогадуватіся про підміну. Правда, Якщо бути точним Зовсім, то оскількі Pentium 4 не підтрімує набір інструкцій AMD 3Dnow, А технологія VT-x НЕ дозволяє перехоплюваті помилки типу «невідома інструкція» (Invalid Opcode), то зімітуваті підтримку 3Dnow! на P4 неможливим. Але 3Dnow! все одно сьогодні практичність не вікорістовується, а в усьому іншому (скажімо, у всьому тому, що рапортує про процесор стандартна інструкція CPUID), імітованім комп'ютер буде вести себе точно як AMD Athlon XP, так що переважно більшість ПЗ на «віверт» піддасться.

От і вся технологія віртуалізації VT-x - ми просто перекладається наш процесор в такий режим, коли ВІН перехоплює Деякі (визначені нами) події і передає ЇХ у спеціальну програму - менеджер віртуальної машини. І ніякої складної бінарної трансляції!

Всього в VT-x десять нових інструкцій:

· VMXON і VMXOFF включаються і вимикають режим VMX.

· VMWRITE дозволяє програмісту запісуваті Дані в структуру VMCS, що опісує віртуальну машину; VMREAD - аналогічно читать Дані з VMCS. Власне формат структури VMCS офіційно невідомий, і яким чином і що там, взагалі кажучи, зберігається - одна Intel знає. Зауважімо, такоже, що сама структура VMCS відносно невелика за розмірамі (одиниці кілобайт) і не зберігає в собі, пріміром, даних про віртуальну пам'яті, що утворює фізічну пам'ять «віртуального комп'ютера», - ЦІ Дані менеджер VMM підтрімує (завантажує і зберігає) для віртуальніх машин самостійно.

· VMPTRLD дозволяє вібрато потоково віртуальну машину (покажчик на VMCS). VMPTRST, аналогічно, ЗБЕРЕГТИ покажчик на поточно віртуальну машину.

· VMLAUNCH дозволяє запустіті вибране віртуальну машину (опісується раніше встановлених Покажчик на коректно потоково VMCS).

· Виконання коду працює віртуальної машини переріває або настання зазначених у VMCS події (зовнішнього переривані, спроба ВИКОНАТИ ту чи іншу інструкцію), або виконання Інструкції VMCALL (Якщо вона дозволена в настройках VMCS).

· VMRESUME дозволяє продовжіті перерване подією виконання коду на віртуальній машіні.

· VMCLEAR вікорістовується для ініціалізації порожній структури VMCS і для перекладу вібраної віртуальної машини в «зупинення» табору (зі збереженням даних VMCS).

Схема 8. Набор инструкций VT-x

Доступ до інструкцій VT-x за замовчуванням заблокований; для їх включення потрібно «включити» біт 4 в четвертому контрольному регістрі процесора (CR4.VMXE = 1) і «включити» біти 0 і 2 в MSR-регістрі 3Ah. На віртуальній машині, емульованої за допомогою VT-x, можна замаскувати підтримку VT-x, повідомляємо інструкцією CPUID, і примусово заблокувати будь-яку можливість використання у віртуальній машині інструкцій даного сімейства. З урахуванням можливостей по маскуванню виконавчі інструкцій на віртуальній машині це означає, що можна домогтися того, що виконуються на віртуальній машині програмне забезпечення ні за яких умов не зможе здогадатися про те, що працює не на реальному комп'ютері, а на віртуальній машині.

Технологія Intel VT вже вийшла на ринок - у продажу є як настільні, так і серверні процесори, офіційно її підтримують. Перелік процесорів Intel з підтримкою VT постійно поповнюється, і ви без праці зможете знайти його на сайті Intel разом із популярним описом самої технології. Корпорація для популяризації цього свого рішення любить влаштовувати живі демонстрації можливостей технології віртуалізації, коли спершу «типовий професіонал» сидить поруч з чотирма системними блоками (пофарбованими для наочності у різний колір), один з яких вважає професійну задачу, на другий виконується офісна робота, третій « крутить »невеликий сервер, четвертий займається обслуговуванням та антивірусної перевіркою (усі - під різними ОС). І кожну з цих систем можна незалежно «підвісити», «заразити» або перезавантажити, в той час як інші продовжують свою діяльність. І кульмінацією цієї демонстрації стає момент, коли відкриваються кришки цих системних блоків, а під ними - порожньо. Поряд ж коштує звичайний «непримітний» системний блок (для наочності пофарбований у ці ж 4 кольори - в смужку), який лише і виконує всю описану вище роботу - під управлінням Intel VT з апаратною підтримкою і декількома одночасно працюють ОС. На недосвідчених користувачів така демонстрація надає велике враження.

Другий, більш «побутової» демонстрацій Intel VT зазвичай виступає домашній мультимедійний комп'ютер, який одночасно обслуговує декілька незалежних користувачів, таких як тато працює з поштою, мама дивиться фільм, а дитя - так, грає чи слухає музику. Папа закінчив і вимкнув свою систему (або система сина під час гри підвисла і пішла на перезавантаження), але при цьому інші користувачі продовжують роботу / розвага, як ні в чому не бувало. Нарешті, принципи віртуалізації використовуються і в деяких «профільних» рішеннях для певних регіонів ринку. Наприклад, в знаменитому «китайському» домашньому концепт-ПК від Intel, який легким поворотом ключика може перекладатися з режиму роботи звичайної користувацької ОС в спеціальний навчальний режим з графічним сенсорним екраном, призначений тільки для простори освоєння ієрогліфічного письма. При цьому поточний стан звичайної ОС повністю зберігається, і до нього можна легко повернутися зворотним поворотом ключика.

Загалом, простір для застосовності технологій віртуалізації на роботі і в побуті є, і питання його грамотного використання з новітніми процесорами Intel тепер лягає на плечі відповідного програмного забезпечення, яке поки що не отримало широкого розповсюдження. Хоча, будемо сподіватися, скоро його все ж таки отримає.