Виртуализация для встроенных систем

Архитектура и возможности гипервизоров для встраиваемых устройств.

В этой статье исследуются разные аспекты виртуализации встраиваемых систем, и объясняется, почему эта технология охватывает все большее число устройств

M. Тим Джонс, инженер-консультант, Emulex Corp.

М. Тим ДжонсМ. Тим Джонс - архитектор встроенного ПО и, кроме того, автор книг Artificial Intelligence: A Systems Approach, GNU/Linux Application Programming (выдержавшей на данный момент второе издание), AI Application Programming (второе издание) и BSD Sockets Programming from a Multilanguage Perspective. Он имеет обширный опыт разработки ПО в самых разных предметных областях - от ядер специальных ОС для геосинхронных космических аппаратов до архитектур встраиваемых систем и сетевых протоколов. Тим - инженер-консультант Emulex Corp., Лонгмонт, Колорадо.



31.01.2012

Сейчас наблюдается развитие не только рынков и возможностей, появившихся благодаря виртуализации, но помимо этого возникают и новые формы самой виртуализации. Хотя виртуализация возникла в эпоху мэйнфреймов, её ключевым рынком оказались сервера открытой архитектуры. Так как было обнаружено, что большинство задач создают минимальную нагрузку на сервер, то благодаря виртуализации стало возможным развернуть несколько экземпляров виртуальных серверов на одном физическом, что привело к экономии финансовых и технических ресурсов, а также облегчило управление ИТ-средой. С помощью гипервизоров 2-го типа (type-2 или hosted hypervisors) виртуализация вышла и на потребительский рынок, сделав возможной одновременную работу нескольких операционных систем на одном компьютере. Виртуальные рабочие станции стали следующей инновацией, позволив серверу обслуживать по сети множество клиентов с минимальным интерфейсом пользователя (так называемые "тонкие клиенты" - thin clients). Но теперь виртуализация проникла и в новую обширную область - на встроенные устройства.

Подобная эволюция не вызывает удивления, так как постоянно появляются всё новые преимущества, связанные с развитием виртуализации. Виртуализация впервые появилась на мэйнфреймах IBM, но затем вектор ее развития сместился вслед за основным направлением развития вычислительной техники на серверы, рабочие станции, а к настоящему моменту уже и на встраиваемые устройства. В 90-ых годах прошлого века виртуализация, которая ранее использовалась только в мэйнфреймах, пережила свое "второе рождение" благодаря появлению микропроцессоров с интегрированной поддержкой виртуализации (см. рисунок 1).

Рисунок 1. Хронологический график развития гипервизоров первого типа
Рисунок 1. Хронологический график развития гипервизоров первого типа

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

Что такое встраиваемая виртуализация?

Встраиваемой виртуализацией (embedded virtualization) обычно называют гипервизор первого типа (type-1 hypervisor), развернутый внутри встраиваемой системы. В этой формулировке есть некое противоречие, так одно из определений встраиваемой системы (embedded system) – это компьютерная система, спроектированная для выполнения небольшого количества специальных функций. Но внесение гипервизора в неё добавляет ей гибкости и высокоуровневые возможности, превращая встраиваемое устройство в систему нового типа.

Ключевые особенности микроядра

В 1995 году Йохен Лидтке (Jochen Liedtke) определил три ключевых абстракции, которые должны быть реализованы в микроядре: адресное пространство (для изолированности), потоки (для многозадачности) и межпроцессное взаимодействие (для общения между потоками в различных адресных пространствах).

Гипервизор – это специальная операционная система (в случае с гипервизорами первого типа), работающая непосредственно на аппаратном обеспечении. Гипервизор создает абстракцию нижележащей аппаратной платформы, таким образом, чтобы она могла использоваться одной или несколькими виртуальными машинами (ВМ), при этом ВМ не знают, что совместно используют одну и ту же платформу. В данном контексте виртуальная машина – это просто контейнер для операционной системы и приложений. Интересное преимущество данного подхода состоит в том, что виртуальная машина изолируется от других виртуальных машин, запущенных на этом же гипервизоре, что позволяет иметь несколько операционных систем или несколько конфигураций одной операционной системы. Изолированность обеспечивает и другие преимущества, которые будут объяснены позже.

В дополнение к этому, встроенные гипервизоры являются гибридом микроядра и платформы для виртуализации (см. рисунок 2). Такая структура позволяет им поддерживать отдельные приложения наряду с виртуальными машинами (операционная система и её приложения).

Рисунок 2. Низкоуровневые операционные системы и гипервизоры
Рисунок 2. Низкоуровневые операционные системы и гипервизоры

Хотя термин "встраиваемые устройства" обычно ассоциируется с ограниченными вычислительными ресурсами, сегодня в эту категорию попадают устройства в диапазоне от мощных процессоров с серверной функциональностью (например, аппаратная поддержка виртуализации) до систем с ограниченными вычислительными ресурсами, оптимизированными для минимального потребления энергии. Это разнообразие порождает больше требований к встраиваемым гипервизорам, чем предъявляется к их собратьям, работающих на мэйнфреймах и серверах.


Особенности встраиваемой виртуализации

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

Эффективность

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

Безопасность

Малый размер имеет свои преимущества. Чем меньше код приложения, тем проще его проверить и убедиться, что в нём нет ошибок. Действительно, некоторые поставщики встраиваемых гипервизоров проверяют свои продукты и официально гарантируют, что в них нет дефектов. Чем меньше гипервизор, тем больше степень защищенности и устойчивости платформы. Это связано с тем, что гипервизор – это обычно единственный компонент системы, запускаемый в привилегированном режиме, который также служит в качестве TCB (trusted computing base – доверенная вычислительная система) и повышает уровень защищенности платформы.

Коммуникации

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

Изолированность

Способность изолировать гостевые операционные системы и приложения друг от друга тесно связана с безопасностью. Кроме предоставления «герметичности» (containment – термин из области разработки ПО) для обеспечения безопасности и надежности, изолированность обеспечивает преимущества и с точки зрения разделения лицензий. Использование коммуникационных механизмов встраиваемого гипервизора позволяет закрытому и открытому ПО существовать в изолированных средах. По мере того как встраиваемые устройства становятся все более открытыми, возможность сочетать собственное ПО с открытым или сторонним ПО становится ключевым требованием.

Возможности работы в режиме реального времени

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


Примеры встраиваемых гипервизоров

Уже существует несколько гипервизоров, предназначенных для применения в области встраиваемых устройств, при этом в их разработке принимают участие не только коммерческие организации, но и open-source сообщество. Компания VMware представила продукт Mobile Virtualization Platform (платформа для мобильной виртуализации), ориентированный на стандартную модель использования: смартфоны для бизнес- и обычных пользователей. При использовании встраиваемого гипервизора, один и тот же смартфон может применяться и для защищенного внутрикорпоративного общения и для личных целей, благодаря разделению двух моделей использования в отдельных контейнерах (виртуальных машинах).

В следующих разделах перечислены некоторые из существующих решений (включая open-source версии), предназначенные для этой и других моделей использования.

PikeOS

PikeOS – это интересная архитектура, ключевой особенностью реализации которой является разделяемое ядро (separation kernel). Как и гипервизор, разделяемое (или фрагментируемое) ядро безопасно изолирует среду для высокоуровневых гостевых систем. PikeOS используется в авиационной индустрии для критически важных приложений. Внедрение встраиваемого гипервизора позволяет использовать на одной и той же платформе устаревшие или унаследованные приложения (внутри виртуальной машины) и новые приложения.

Рисунок 3. Встроенная виртуализация на основе PikeOS
Рисунок 3. Встроенная виртуализация на основе PikeOS

В пространстве ядра PikeOS реализован набор пакетов для поддержки архитектур и платформ, существующих для данного аппаратного обеспечения (x86, PowerPC, SuperH и др.) в дополнение к разделяемому ядру, отвечающему за виртулизационную платформу. В PikeOS поддерживаются не только гостевые операционные системы (с необходимыми приложениями) но и простые прикладные программные интерфейсы (application programming interface) или среды исполнения (run time environment) для определенной предметной области (например, «родной» интерфейс PikeOS или Java™-среда реального времени).

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

PikeOS, активно применяющийся в авиационной индустрии, скоро может появиться и в автомобилях благодаря технологии AUTOSAR (Automotive Open System Architecture). Дополнительную информацию о PikeOS можно найти в разделе Ресурсы.

OKL4

Компания OK Labs (Open Kernel Labs) была основана в 2006 году для разработки микроядер и гипервизоров для встраиваемых систем. Разработки OK Labs в этих областях привели к созданию понятия "микровизор" (microvisor), в котором микроядро совмещается с виртулизационной функциональностью. Эта компания достигла значительного успеха в области встраиваемой виртуализации, и ее микровизор с открытым кодом OKL4 используется более чем в миллионе устройств, например, Evoke QA4 (первый телефон, поддерживающий виртуализацию и одновременную работу двух операционных систем, включая Linux®).

OKL4 основан на семействе микроядер L4 (разработанных Йохеном Лидтке). Технология L4 в свою очередь основывается на Mach (микроядре, разработанном в университете Карнеги-Меллон в качестве замены стандартного ядра UNIX®). Для реализации оптимального решения изначально L4 была спроектирована исключительно на основе ассемблера x86. Затем эта технология была переписана на языке C++ и превратилась в целое семейство микроядер: от L4Ka::Hazelnut, спроектированного для 32-битной архитектуры Intel®, до L4Ka::Pistachio, мультиплатформенной реализации, выпущенной под лицензией Berkeley Software Distribution.

В микровизоре OKL4 реализованы фрагменты, известные как защищенные ячейки (secure cells) для изоляции виртуальных машин внутри архитектуры. Микровизор OKL4 располагается в привилегированном пространстве ядра, а все виртуальные машины, платформенные приложения и драйверы выделяются в отдельные изолированные разделы с эффективным механизмом межпроцессного взаимодействия (interprocess communication mechanism - IPC). Этот механизм позволяет отдельным разделам общаться и взаимодействовать (см. рисунок 4). Так как драйверы аппаратных устройств вынесены за пределы микровизора (как это обычно происходит в микроядрах), то IPC играет и еще одну важную роль, выступая в качестве стандартного канала ввода/вывода. Кроме того, так как отдельные приложения и драйверы могут быть интегрированы в платформу без использования операционной системы, то компонентная модель OKL4 получилась облегченной.

Рисунок 4. Микровизор OKL4
Рисунок 4. Микровизор OKL4

Микровизор реализует базовое микроядро с виртуализационной функциональностью, которая включает управление ресурсами и планирование на уровне реального времени, а также обеспечивает минимальные потери производительности. В OKL4 реализована паравиртуализация, что позволяет настраивать операционные системы для запуска поверх микровизора. OK Labs предлагает поддержку для нескольких паравиртуализированных операционных систем, включая OK:Linux, OK:Android и OK:Symbian.

NOVA

Микрогипервизор (microhypervisor) NOVA появился в 2010 году. Как и в предыдущих микроядерных архитектурах, в NOVA используется "тонкое" микроядро с отдельными уровнями для непривилегированного кода. В NOVA применяются возможности виртуализации современных аппаратных платформ для повышения производительности систем, основанных на компонентах.

NOVA состоит из микрогипервизора и пользовательской среды для базовых функций системы. К базовым компонентам Nova (изображенным на рисунке 5) относятся:

  • менеджер корневого раздела (root partition manager), который занимается выделением ресурсов за пределами микроядра;
  • драйверы для нижележащих аппаратных устройств;
  • мониторы виртуальных машин (VMM – virtual machine monitor) для каждой гостевой операционной системы, которые управляют распределением памяти между гостевой и базовой системами и выполняют эмуляцию инструкций.

В Nova реализована полная виртуализация, так что определенные инструкции (например, x86 CPUID) должны корректно эмулироваться для каждой гостевой системы, основанной на данной конфигурации. Мониторы также реализуют эмуляцию устройств, делая аппаратные устройства доступными всем гостевым системам. Благодаря полной реализации виртуализации в Nova также доступна поддержка немодифицированных гостевых операционных систем.

Рисунок 5. Архитектура микрогипервизора NOVA
Рисунок 5. Архитектура микрогипервизора NOVA

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

NOVA считается микроядром третьего поколения. Его предшественниками были Mach и Chorus (микроядра первого поколения) и L4 (микроядро второго поколения).

Codezero

Встраиваемый гипервизор Codezero – это новое микроядро на основе архитектуры L4, написанное с "нуля", чтобы воспользоваться преимуществами новейших микроядер. Архитектура Codezero обладает виртуализационными возможностями и одновременно следует фундаментальным принципам проектирования микроядер, согласно которым реализация адресного пространства, управления многозадачностью и IPC должны содержаться исключительно в привилегированном микроядре.

Как показано на рисунке 6, в Codezero поверх аппаратной платформы находится стандартный уровень абстракции, в котором реализуется многозадачность, IPC, управление адресным пространством и его "привязка", безопасность, питание и управление восстановлением после сбоев. Планировщик Codezero включает поддержку приоритетных прерываний (preemption) для потоков гостевой системы и потоков самого микроядра (в дополнении к разделению времени).

Виртуализация в Codezero реализована с помощью контейнеров. Каждый контейнер – это изолированная среда исполнения со своим набором ресурсов (память, потоки и т.д.). Разделение в Codezero также применяется и для политик управления безопасностью и ресурсами, которые определяют возможности, доступные каждому контейнеру.

Рисунок 6. Архитектура встраиваемого гипервизора Codezero
Рисунок 6. Архитектура встраиваемого гипервизора Codezero

Codezero использует преимущества последних наработок проектирования микроядер. Для эффективности в Codezero реализованы три формы IPC, основанные на модели взаимодействия. В Codezero поддерживаются "короткий" IPC (между потоками в пространстве пользователя), "полный" IPC (256 байтов) и расширенный IPC (2048 байтов). IPC для буферов крупного размера выполняется через привязку страниц совместного доступа. Codezero был специально спроектирован для встраиваемых систем и поддерживает многоядерные процессоры и архитектуры на основе ARM.


Применение встраиваемых гипервизоров

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

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


Будущее встраиваемой виртуализации

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

Ресурсы

Научиться

Получить продукты и технологии

  • PikeOS – интересный пример встраиваемого гипервизора и фрагментированного ядра. PikeOS широко применяется в авиационных системах, а также постепенно интегрируется и в автомобильные системы (AUTOSAR).
  • Компания OK Labs "с нуля" разработала встраиваемый гипервизор - OKL4 Microvisor. OKL4 основан на микроядре L4 и широко применяется в мобильных устройствах. Микровизор OKL4 и микроядро можно загрузить с Wiki-страницы Web-сайта OK Labs.
  • Микрогипервизор NOVA был разработан в Техническом университете Дрездена и представляет собой микроядро третьего поколения. Дополнительную информацию о NOVA можно получить на странице его разработчиков или в статье "NOVA: A Microhypervisor-Based Secure Virtualization Architecture" Там же на сайте университета можно найти информацию и о микроядрах семейства L4.
  • Загрузите исходный код Codezero, еще одного низкоуровневого встроенного гипервизора (и операционной системы), ориентированного на использование во встраиваемых процессорах.

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=790566
ArticleTitle=Виртуализация для встроенных систем
publish-date=01312012