Выпуск гипервизора Bareflank 2.0

Состоялся релиз гипервизора Bareflank 2.0, предоставляющего инструментарий для быстрой разработки специализированных гипервизоров. Bareflank написан на языке C++, поддерживает C++ STL и предоставляет собственную библиотеку раскручивания стека исключений (unwind). Модульная архитектура Bareflank позволят легко расширять имеющиеся возможности гипервизора и создавать собственные варианты гипервизоров, как работающих поверх оборудования (как Xen), так и запускаемых в имеющемся программном окружении (как VirtualBox). Имеется возможность выполнения операционной системы хост-окружения в отдельной виртуальной машине. Код проекта распространяется под лицензией LGPL 2.1.

В Bareflank реализована поддержка Linux, Windows и UEFI на 64-разрядных CPU Intel. Для аппаратного разделения ресурсов виртуальных машин применяется технология Intel VT-x. На будущее запланирована поддержка macOS и BSD-систем, а также возможность работы на платформах ARM64 и AMD. Дополнительно проектом развивается собственный драйвер для загрузки VMM (Virtual Machine Manager), ELF-загрузчик для загрузки модулей VVM, приложение bfm для управления гипервизором из пространства пользователя. Предоставляется инструментарий для написания расширений с использованием элементов, определённых в спецификациях C++11/14, а также своя runtime-библиотека для поддержки применения конструкторов/деструкторов и регистрации обработчиков исключений.

На базе Bareflank ведётся разработка системы виртуализации Boxy, поддерживающей запуск гостевых систем и позволяющей использовать легковесные виртуальные машины с Linux и Unikernel для запуска специализированных сервисов или приложений. Например, в форме изолированных сервисов можно выполнять как обычные web-сервисы, так и приложения, к которым предъявляются особые требования к надёжности и безопасности, на которые не должно влиять состояние хост-окружения (хост-окружение изолируется в отдельной виртуальной машине).

Основные новшества Bareflank 2.0:

  • Новая система сборки на базе CMake, независимая от командного интерпретатора, позволяющая добиться существенного ускорения компиляции гипервизора и упрощающая поддержку в будущем дополнительных архитектур, таких как ARM.
  • Проведена реорганизация кода и упрощение структуры исходных текстов. Улучшена поддержка смежных проектов, таких как hyperkernel, без необходимости дублирования кода. Более явно отделён код гипервизора, unwind-библиотеки, runtime, управляющего инструментария, загрузчика и SDK;
  • Большая часть API вместо ранее применявшихся механизмов наследования в C++ переведена на применение делегирования, что позволило упростить API, повысить производительность и сократить потребление ресурсов.
  • Добавлена поддержка запуска Bareflank напрямую из UEFI для последующего выполнения операционной системы в виртуальной машине;
  • Реализован новый менеджер управления памятью, спроектированный по аналогии с менеджерами памяти SLAB/Buddy в Linux. Новый менеджер памяти демонстрирует снижение фрагментации, позволяет добиться более высокой производительности и поддерживает динамическое выделение памяти гипервизору через bfdriver, что позволяет сократить начальный размер гипервизора и оптимально масштабироваться в зависимости от числа ядер CPU.



Источник: http://www.opennet.ru/opennews/art.shtml? num=52279

© OpenNet