Введение
Виртуализация — технология, позволяющая запускать несколько изолированных программных сред (виртуальных машин, ВМ) на одном физическом устройстве. В встраиваемых системах она решает задачи:
- консолидации разнородных приложений на единой аппаратной платформе;
- обеспечения изоляции критических компонентов (безопасность, отказоустойчивость);
- упрощения сертификации и повторного использования ПО;
- поддержки legacy‑приложений на новом железе.
Гипервизор (Virtual Machine Monitor, VMM) — программное ядро, управляющее ВМ и распределяющее ресурсы (CPU, память, ввод‑вывод).
Ключевые требования к встраиваемой виртуализации:
- минимальные накладные расходы (низкая задержка, малый объём памяти);
- детерминированное поведение (предсказуемые временные характеристики);
- поддержка специфических интерфейсов (CAN, SPI, GPIO);
- сертификация по отраслевым стандартам (DO‑178C, IEC 61508, ISO 26262).
1. Типы виртуализации и гипервизоров
1.1. По уровню абстракции
- Аппаратная виртуализация (на базе CPU extensions):
- использует инструкции VT‑x (Intel), AMD‑V, Virtualization Extensions (ARM);
- обеспечивает высокую производительность и изоляцию;
- требует поддержки в процессоре.
- Программная виртуализация (без аппаратных расширений):
- эмуляция инструкций в софте;
- выше накладные расходы, ниже безопасность;
- применима на старом железе.
1.2. По архитектуре гипервизора
- Тип 1 (нативный, bare‑metal):
- запускается напрямую на железе;
- управляет всеми ресурсами;
- примеры: Xen, KVM, Jailhouse, ACRN.
- Тип 2 (хостовый):
- работает поверх обычной ОС;
- ниже производительность и изоляция;
- примеры: QEMU/KVM в Linux.
1.3. По степени изоляции
- Полная виртуализация — ВМ видит виртуальное «железо», совместимое с физическим.
- Паравиртуализация — гостевая ОС модифицирована для взаимодействия с гипервизором (быстрее, но требует изменений в ПО).
- Контейнерная изоляция — разделение процессов на уровне ядра ОС (низкие накладные расходы, слабая изоляция).
2. Архитектура гипервизора для встраиваемых систем
2.1. Основные компоненты
- Монитор виртуальных машин (VMM):
- управление жизненным циклом ВМ (создание, запуск, остановка);
- переключение контекстов CPU;
- обработка исключений и прерываний.
- Менеджер памяти:
- распределение физической памяти между ВМ;
- настройка таблиц страниц (MMU);
- защита областей памяти.
- Виртуальные устройства (virtio):
- эмулированные интерфейсы для ВМ;
- драйверы для гостевых ОС.
- Механизм IPC — обмен данными между ВМ и гипервизором.
- Отладчик и мониторинг — логирование событий, статистика производительности.
2.2. Обработка прерываний и исключений
- Прямое назначение (direct injection) — прерывание передаётся конкретной ВМ.
- Мультикастинг — прерывание доставляется нескольким ВМ.
- Эмуляция — гипервизор обрабатывает прерывание и симулирует ответ.
- Приоритезация — критические прерывания (таймер, I/O) обслуживаются с минимальным лагом.
2.3. Управление временем и таймерами
- Виртуальные таймеры для каждой ВМ.
- Счётчики производительности (performance counters) — разделение между ВМ.
- Синхронизация времени между ВМ (NTP, PTP).
3. Особенности встраиваемой виртуализации
3.1. Ограниченные ресурсы
- Память:
- статическое распределение (без свопинга);
- минимизация оверхеда гипервизора (50–200 КБ).
- CPU:
- жёсткое разделение ядер между ВМ (partitioning);
- выделение выделенных ядер для критических задач.
- I/O:
- прямой доступ ВМ к устройствам (PCI passthrough);
- виртуализация интерфейсов (UART, Ethernet, CAN).
3.2. Детерминированность и RT‑характеристики
- Гарантированные задержки на переключение контекста (микросекунды).
- Изоляция по времени — ВМ не могут блокировать друг друга.
- Поддержка RTOS в гостях (FreeRTOS, QNX, VxWorks).
3.3. Безопасность и изоляция
- Доверенная загрузка (Secure Boot) гипервизора.
- Защита памяти (MPU/MMU) — запрет доступа между ВМ.
- Контроль доступа к устройствам (IOMMU).
- Криптографические модули для защиты данных ВМ.
3.4. Сертификация
- Соответствие стандартам:
- авиация — DO‑178C (уровни A–D);
- автопром — ISO 26262 (ASIL B–D);
- промышленность — IEC 61508 (SIL 3–4).
- Документированные процессы верификации и валидации.
4. Механизмы виртуализации ресурсов
4.1. Виртуализация CPU
- Переключение контекстов (context switch) между ВМ.
- Управление режимами CPU (user/kernel, виртуализация).
- Распределение квантов времени (time slicing) или жёсткое закрепление ядер.
4.2. Виртуализация памяти
- Таблицы страниц (page tables) для каждой ВМ.
- Расширенная таблица страниц (EPT, RVI) — аппаратная поддержка.
- Защита областей (read‑only, no‑execute).
4.3. Виртуализация ввода‑вывода (I/O)
- Прямой доступ (PCI passthrough) — ВМ владеет устройством напрямую.
- Эмулированные устройства — гипервизор симулирует интерфейс.
- Virtio — стандарт для высокопроизводительных виртуальных драйверов.
- IOMMU (Intel VT‑d, AMD Vi) — защита DMA‑операций.
4.4. Сетевая виртуализация
- Виртуальные коммутаторы (vSwitch) — изоляция трафика между ВМ.
- QoS для сети — гарантии пропускной способности.
- VPN и шифрование — безопасность меж‑ВМ‑коммуникаций.
5. Примеры гипервизоров для встраиваемых систем
5.1. Jailhouse (open source)
- Особенности:
- микрогипервизор (тип 1) для Linux;
- жёсткая изоляция (partitioning) без эмуляции;
- низкие накладные расходы (< 1 %).
- Применение: промышленные контроллеры, телеком.
5.2. ACRN (open source, Linux Foundation)
- Особенности:
- оптимизирован для IoT и автопрома;
- поддержка RTOS в гостях;
- модульность (можно отключать компоненты).
- Применение: автомобильные инфотейнмент‑системы, дроны.
5.3. Xen (open source)
- Особенности:
- зрелая экосистема, поддержка ARM/x86;
- паравиртуализация и HVM;
- механизмы безопасности (Xen Security Modules).
- Применение: серверы, сетевые устройства.
5.4. KVM (Kernel‑based VM, в составе Linux)
- Особенности:
- тип 2, работает на Linux;
- интеграция с cgroups, namespaces;
- поддержка контейнеров и ВМ.
- Применение: встраиваемые Linux‑системы с виртуализацией.
5.5. Lynk Embedded Hypervisor
- Особенности:
- сертифицированный (DO‑178C, ISO 26262);
- малый размер (< 100 КБ);
- RT‑характеристики.
- Применение: авиация, медицина.
6. Сценарии применения
6.1. Консолидация ПО на единой платформе
- Пример: автомобильный ECU с:
- критичной RTOS для управления двигателем;
- Linux для инфотейнмента;
- Android для дисплея.
- Выгода: снижение стоимости железа, упрощение проводки.
6.2. Изоляция критических приложений
- Пример: медицинский прибор с:
- ВМ для управления насосом (



