Віртуальна машина

Віртуальна машина — модель обчислювальної машини, створеної шляхом віртуалізації обчислювальних ресурсів: процесора, оперативної пам'яті, пристроїв зберігання та вводу і виводу інформації.
Віртуальна машина, на відміну від програми емуляції конкретного пристрою, забезпечує повну емуляцію фізичної машини чи середовища виконання (для програми).
Визначення[ред. | ред. код]
Раніше віртуальну машину визначали як «ефективну ізольовану копію реальної машини». Проте сучасні віртуальні машини можуть не мати прямого апаратного аналогу. Наприклад, в залежності від способу моделювання набору інструкцій віртуального центрального процесора, віртуальна машина може моделювати реальну або абстрактну обчислювальні машини. При моделюванні реальної обчислювальної машини набір інструкцій процесора віртуальної машини збігається з набором інструкцій обраного для моделювання центрального процесора.
Віртуальні машини поділяються на 2 головні категорії, в залежності від їх використання та відповідності до реальної апаратури:
- системні (апаратні) віртуальні машини, що забезпечують повноцінну емуляцію всієї апаратної платформи і відповідно підтримують виконання операційної системи.
- прикладні віртуальні машини, які розробленні для виконання лише застосунків (прикладних програм), наприклад, Віртуальна машина Java.
Системні віртуальні машини[ред. | ред. код]
Системні віртуальні машини дозволяють розподіл апаратних ресурсів фізичної машини між різними копіями віртуальних машин, на кожній з яких може бути встановлена своя операційна система. Пласт програмного забезпечення, що виконує віртуалізацію, називається гіпервізором. Гіпервізори поділяються на 2 типи: ті, що можуть виконуватися на «голій[en]» апаратурі (1-й тип, або рідні (англ. native)), та ті, що виконуються в певній операційній системі (2-й тип, або хостові).
Основні переваги системних ВМ:
- різні операційні системи можуть співіснувати на одному комп'ютері, і при цьому знаходитися в строгій ізоляції одна від одної
- ВМ можуть забезпечувати розширений набір машинних інструкцій, адже при моделюванні абстрактної обчислювальної машини набір інструкцій процесора віртуальної машини може бути довільним.
- широкі можливості контролю за програмами
- легкість модифікацій та відновлення
Основний недолік:
- віртуальна машина не така ефективна як реальна, тому що доступ до апаратури в ній відбувається опосередковано.
Різні ВМ, на кожній з яких може бути встановлена своя власна ОС (які також називається гостьовими ОС), часто використовуються для серверного об'єднання: різні сервіси (що повинні виконуватися на окремих машинах, щоб запобігти взаємовтручанню) запускаються в різних ВМ, проте на одній фізичній машині, що дозволяє економити апаратні ресурси.
Прикладні віртуальні машини[ред. | ред. код]
Прикладні віртуальні машини виконують звичайні програми всередині ОС. Вони зазвичай створюються коли програма запускається та знищуються після її завершення. Їхня ціль — забезпечити платформно-незалежне програмне середовище, яке дозволяє абстрагуватися від конкретної апаратури та операційної системи, на якій виконується програма.
Прикладна ВМ забезпечує високорівневу абстракцію (наприклад, інтерпретатори високорівневих мов програмування — Lisp, Java, Python, Perl), в той час як системні ВМ зазвичай обмежуються низькорівневою абстракцією (машинним набором кодів). Сучасні прикладні ВМ, що реалізуються за допомогою інтерпретаторів, для підвищення швидкості виконання використовують компіляцію «на льоту» (англ. JIT — just-in-time).
Технології[ред. | ред. код]
Рідна емуляція[ред. | ред. код]
Цей підхід полягає в простому розподіленні тих апаратних ресурсів, на яких запущена ВМ. Кожна копія ВМ обмежена реальною апаратурою. Відповідно, ми зможемо використовувати лише ті ОС, які підтримують нашу апаратуру.
Нерідна емуляція[ред. | ред. код]
В цьому випадку ВМ емулює апаратуру, яка може відрізнятися від тієї, на якій вона запущена. Це розширює круг ОС, які ми можемо на неї встановити.
Віртуалізація рівня ОС[ред. | ред. код]
Ядро ОС дозволяє створювати багато ізольованих один від одного просторів користувачів. В цьому випадку крах програми в одному просторі ніяк не вплине на програми в інших просторах.
Приклади та підтримка[ред. | ред. код]
Першою (і досьогодні — однією з найкращих операційних систем, які підтримували концепцію віртуальної машини) є операційна система VM (в межах колишнього СРСР також відома як СВМ — Система Віртуальних Машин) фірми IBM.
На окремих апаратних платформах можлива апаратна підтримка віртуальних машин. Вперше технологія апаратної підтримки віртуальних машин була реалізована в машині серії IBM-370 (початок 1970 рр.) як можливість завантаження мікропрограмного коду, який забезпечував додаткову функціональність центрального процесора IBM-370 для обслуговування віртуальних машин.
Однією з найпопулярніших насьгодні віртуальних машин є віртуальна машина Java.
Застосування[ред. | ред. код]
Віртуальні машини можуть використовуватися для:
- захисту інформації і обмеження можливостей програм;
- Дослідження продуктивності ПО або нової комп'ютерної архітектури;
- емуляції різних архітектур (наприклад, емулятор ігрової приставки);
- Оптимізації використання ресурсів мейнфреймів та інших потужних комп'ютерів;
- шкідливого коду для управління інфікованої системою: вірус PMBS, виявлений в 1993 році, а також руткит SubVirt, створений в 2006 рік у в Microsoft Research, створювали віртуальну систему, якої обмежувався користувач і все захисні програми (антивіруси та інші).
- Моделювання інформаційних систем з клієнт-серверною архітектурою на одній ЕОМ (емуляція комп'ютерної мережі за допомогою декількох віртуальних машин).
- Спрощення управління кластерами — віртуальні машини можуть просто мігрувати з однієї фізичної машини на іншу під час роботи.
- Тестування і налагодження системного програмного забезпечення;
Приклади віртуальних машин:
Див. також[ред. | ред. код]
Посилання[ред. | ред. код]
- Виртуализация vSphere, Hyper-V, XenServer и Red Hat (рос.) [Архівовано 25 серпня 2011 у WebCite]
- Виртуализация. VMware vSphere (рос.) [Архівовано 25 серпня 2011 у WebCite]
- Виртуальные машины дома и в бизнесе (рос.) [Архівовано 25 серпня 2011 у WebCite]
Ця стаття не містить посилань на джерела. (квітень 2016) |
![]() | Ця стаття потребує додаткових посилань на джерела для поліпшення її перевірності. (квітень 2016) |
![]() |
Це незавершена стаття про операційні системи. Ви можете допомогти проєкту, виправивши або дописавши її. |