Перейти к основному содержанию

Эмуляция и виртуализация

Эмуляторы

В современном мире информационных технологий термины эмуляция и виртуализация часто используют как синонимы, но между ними существуют принципиальные различия. Оба подхода позволяют запускать код в неродной среде, но делают это по-разному, с разной эффективностью и для разных целей.

Эмуляция — глубокое погружение в чужую архитектуру

Эмуляция — это полная имитация работы одной системы (аппаратной или программной) внутри другой.

Эмулятор — это программное обеспечение (или аппаратно-программный комплекс), которое воспроизводит поведение другого устройства или системы на уровне команд, регистров, прерываний, таймингов и периферийных устройств.

Как работает эмуляция?

В процессе эмуляции на программном уровне происходит перехват команд, предназначенных для исходного оборудования, их декодирование, преобразование и выполнение в текущей среде. Программы, запущенные внутри эмулятора, не подозревают о том, что работают в чужой среде — для них все выглядит так, будто они выполняются на родном железе.

Примеры эмуляторов и их применение

  • QEMU (Quick EMUlator) — один из самых мощных эмуляторов, способный эмулировать архитектуры: x86, ARM, MIPS, RISC-V, PowerPC, SPARC и десятки других. Позволяет запустить образ ОС для Raspberry Pi на обычном ПК с процессором Intel.
  • Dolphin — эмулятор игровых консолей Nintendo GameCube и Wii. Он эмулирует процессор PowerPC, графический чип ATI, звуковой процессор и даже контроллеры с обратной связью.
  • DOSBox — эмулятор IBM PC-совместимого компьютера для запуска старых DOS-программ и игр под современными Windows, macOS или Linux. Эмулирует процессор 8086/286/386, звуковые карты (Sound Blaster), графические режимы (VGA, CGA) и скорость тактового генератора.
  • MAME — эмулятор аркадных автоматов. Способен воспроизводить сотни уникальных аппаратных платформ, часто с точностью до отдельных чипов.
  • Android Emulator (в составе Android Studio) — эмулирует полный стек мобильного устройства: ARM или x86 процессор, GPU, датчики, GPS, акселерометр, камеру.

Сферы использования эмуляции

  • Разработка ПО для встраиваемых систем — когда реальное железо еще не готово или слишком дорого.
  • Ретрогейминг и сохранение цифрового наследия — запуск старых игр и программ.
  • Обратная разработка и анализ вредоносного ПО — изолированное выполнение подозрительного кода в эмулируемой среде.
  • Обучение и тренажеры — эмуляторы промышленных контроллеров, банкоматов, медицинского оборудования. Все виды тренажеров (авиационных, автомобильных) — в некотором роде эмуляторы реальных систем.
  • Кроссплатформенная разработка — тестирование приложения под несколько ОС без покупки физических устройств.

Недостатки эмуляции

Главный минус — производительность. Каждая команда гостевой системы проходит через несколько уровней преобразования: выборка → декодирование → трансляция → выполнение. Эмуляция обычно требует в 10–100 раз больше ресурсов, чем нативное выполнение. Для сложных или специализированных задач иногда используют гибридные подходы, сочетающие аспекты эмуляции и виртуализации (например, QEMU с KVM).

Виртуализация — эффективное разделение одного железа

Виртуализация — это частный, но самый распространенный случай эмуляции. Её цель — не имитация чужой архитектуры, а разделение ресурсов одного физического компьютера между несколькими изолированными виртуальными машинами. 

При виртуализации имитируются только некоторые аппаратные компоненты (процессор, память, диски, сетевые карты), но имитации другой архитектуры не происходит — гостевая ОС работает на той же платформе, что и гипервизор.

Гипервизор — сердце виртуализации

Гипервизор — это аппаратная или программная система, обеспечивающая параллельную работу на одном компьютере нескольких операционных систем (гостевых). Гипервизор распределяет ресурсы (CPU, RAM, диски, сеть) между виртуальными машинами и обеспечивает их изоляцию друг от друга.

Типы гипервизоров

Гипервизоры первого типа (Type 1) запускаются непосредственно на оборудовании. Они заменяют собой обычную операционную систему. Их называют также микроядром, тонким гипервизором или автономным гипервизором.

Гипервизоры второго типа (Type 2) работают как обычное приложение внутри хостовой операционной системы (Windows, Linux, macOS).

Что такое гипервизор?

Примеры применения виртуализации

  • Серверная консолидация — на одном физическом сервере работает 10–20 виртуальных машин вместо 10–20 физических серверов. Экономия электроэнергии, места и обслуживания.
  • Тестирование совместимости — одновременный запуск Windows 10, Windows Server 2019, Ubuntu, FreeBSD на одном компьютере.
  • Облачные вычисления — по требованию клиента создается и уничтожается виртуальная машина за секунды.
  • Защита от вредоносного ПО — подозрительные файлы запускаются внутри изолированной виртуальной машины (песочница).

Расширенные виды виртуализации (на которые способны гипервизоры)

Помимо классической виртуализации серверов, гипервизоры и сопутствующие технологии обеспечивают:

  • Виртуализация систем хранения данных (SDS) — например, VMware vSAN или Microsoft Storage Spaces Direct. Устраняются проблемы несовместимости контроллеров, ограничения нестандартного ПО и инструментов администрирования. Виртуальный диск может одновременно лежать на нескольких физических накопителях.
  • Виртуализация рабочего стола (VDI) — на сервере работают десятки виртуальных машин с Windows, а пользователи подключаются к ним с тонких клиентов. Примеры: Citrix Virtual Apps, VMware Horizon.
  • Виртуализация ОС (контейнеризация) — не полная виртуальная машина, а изолированное окружение на уровне ядра хостовой ОС. Примеры: Docker, LXC, systemd-nspawn. Это легковесная альтернатива гипервизору для запуска изолированных приложений.
  • Виртуализация приложений — приложение упаковывается вместе со своими библиотеками и не требует установки в систему. Примеры: VMware ThinApp, Microsoft App-V.

Гибридные подходы

На практике граница между виртуализацией и эмуляцией размыта. Большинство систем виртуализации выросло из эмуляторов.

К примеру, QEMU может работать в двух режимах:

  • Чистая эмуляция — когда гостевая архитектура отличается от хост-архитектуры (медленно).
  • Ускоренная виртуализация (через KVM на Linux или HVF на macOS) — когда архитектура совпадает, и QEMU выступает как гипервизор Type 2 (быстро).

Гипервизор ESXi может эмулировать поддержку аппаратной виртуализации.

Гипервизор в гипервизоре

Rosetta 2 от Apple — гибрид: транслирует команды x86_64 в ARM64 на лету с аппаратным ускорением, сочетая элементы эмуляции и нативного выполнения.

Заключение

Выбор между эмуляцией и виртуализацией зависит от задачи. Если нужно запустить операционную систему для другой архитектуры процессора — эмуляция неизбежна. Если нужно эффективно разделить ресурсы одного мощного сервера между несколькими ОС той же архитектуры — виртуализация даст наилучшую производительность. А для сложных или специализированных задач всё чаще применяют гибридные решения, объединяющие лучшие черты обоих подходов.

Ссылки

Игры

 

Похожие материалы

Уменьшение виртуального диска с LVM

У нас есть виртуальная машина, на ней есть диск. Диск большой, данных мало. Наша задача - сделать диск меньшего размера. На борту Logical Volume Manager (LVM). Gparted не умеет переносить данные на LVM разделах. Будем делать всё руками.