Выпуск гипервизора 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