2.2. Віртуальна машина
Віртуальна
машина – модель
обчислювальної машини, створеної шляхом віртуалізації обчислювальних ресурсів:
процесора, оперативної пам’яті, пристроїв зберігання та вводу і виводу
інформації.
Віртуальна машина на відміну від програми емуляції
конкретного пристрою забезпечує повну емуляцію фізичної машини чи середовища
виконання (для програми).
Визначення
Раніше віртуальну машину визначали як «ефективну
ізольовану копію реальної машини». Проте сучасні віртуальні машини можуть не
мати прямого апаратного аналогу. Наприклад, в залежності від способу
моделювання набору інструкцій віртуального центрального процесора, віртуальна
машина може моделювати реальну або абстрактну обчислювальні машини. Під час
моделювання реальної обчислювальної машини набір інструкцій процесора
віртуальної машини збігається з набором інструкцій обраного для моделювання
центрального процесора.
Віртуальні машини поділяються на 2 головні
категорії, в залежності від їх використання та відповідності до реальної
апаратури:
ü
системні
(апаратні) віртуальні машини, що забезпечують повноцінну емуляцію всієї
апаратної платформи і відповідно підтримують виконання операційної системи;
ü
прикладні
віртуальні машини, які розроблені для виконання лише застосунків (прикладних
програм), наприклад, Віртуальна машина Java.
Системні
віртуальні машини
Системні віртуальні машини дозволяють розподіл
апаратних ресурсів фізичної машини між різними копіями віртуальних машин, на
кожній з яких може бути встановлена своя операційна система. Пласт програмного
забезпечення, що виконує віртуалізацію, називається гіпервізором. Гіпервізори
поділяються на 2 типи: ті, що можуть виконуватися на "голій"
апаратурі (1-й тип або рідні (англ. native)), та ті, що виконуються в певній операційній
системі (2-й тип або хостові).
Основні
переваги системних ВМ:
ü
різні
операційні системи можуть співіснувати на одному комп’ютері, і при цьому
знаходитися в строгій ізоляції одна від одної;
ü
ВМ
можуть забезпечувати розширений набір машинних інструкцій, адже при моделюванні
абстрактної обчислювальної машини набір інструкцій процесора віртуальної машини
може бути довільним;
ü
широкі
можливості контролю за програмами;
ü
легкість
модифікацій та відновлення.
Основний
недолік:
ü
віртуальна
машина не така ефективна як реальна, тому що доступ до апаратури в ній
відбувається опосередковано.
Різні ВМ, на кожній з яких може бути встановлена
своя власна ОС (які також називаються гостьовими
ОС), часто використовуються для серверного
об’єднання: різні сервіси (що
повинні виконуватися на окремих машинах, щоб запобігти взаємовтручанню)
запускаються в різних ВМ, проте на одній фізичній машині, що дозволяє економити
апаратні ресурси.
Прикладні
віртуальні машини
Прикладні віртуальні машини виконують звичайні
програми всередині ОС. Вони зазвичай створюються коли програма запускається та
знищуються після її завершення. Їхня ціль – забезпечити платформно-незалежне програмне середовище, яке дозволяє
абстрагуватися від конкретної апаратури та операційної системи, на якій
виконується програма.
Прикладна ВМ забезпечує високорівневу абстракцію (наприклад, інтерпретатори високорівневих мов програмування – Lisp, Java, Python, Perl), в той час як системні ВМ зазвичай обмежуються низькорівневою абстракцією (машинним набором кодів). Сучасні прикладні ВМ, що реалізуються за допомогою інтерпретаторів, для підвищення швидкості виконання використовують компіляцію "на льоту" (англ. JIT – just-in-time).