В рамках проекта IncludeOS развивается ядро для обособленного запуска C++-приложений

2 декабря 2015 года

Университетский колледж Осло и Акерсхуса открыл исходные тексты исследовательского проекта IncludeOS, в рамках которого развивается специализированное ядро ( unikernel), позволяющие запускать приложения, написанные на языке С++, непосредственно поверх гипервизора, без применения дополнительных прослоек и окружения операционной системы. Код открыт под лицензией Apache 2.0.

IncludeOS предоставляет минимальное необходимое самодостаточное окружение, которое взаимодействует непосредственно с гипервизором и предоставляет загрузчик, ядро, минимальный набор библиотек и модулей, достаточный для выполнения кода на языке С++, написанный с использованием стандартной библиотеки классов. Окружение компонуется с предназначенным для выполнения приложением и оформляется в виде загрузочного образа виртуальной машины, образуя готовый облачный сервис. Из систем виртуализации, в которых могут работать подобные окружения, поддерживаются KVM/Linux, VirtualBox и Bochs.

Суммарный размер библиотек и компонентов операционной системы составляет всего 693 Кб. Нагрузка на CPU при работе экспериментального DNS-сервера, построенного на базе IncludeOS, оценивается в 5-20% по сравнению с запуском того же исполняемого файла в обычной гостевой системе. Поддерживается сборка программ, написанных с использованием спецификаций C++11/14, и пригодных для компиляции с использованием Сlang 3.6 с libc++ от проекта LLVM, или программ на языке Си, которые могут быть собраны с библиотекой newlib от компании Red Hat. Для организации сетевого взаимодействия применяется драйвер Virtio, DHCP-клиент и собственный TCP/IP-стек, который предоставляет набор возможностей, достаточный для работы HTTP- и DNS-серверов.

Предназначенное для выполнения в окружении IncludeOS приложение создаётся с соблюдением определённых требований, например, применяется напоминающая по стилю Node.js неблокирующая система callback-вызовов, вместо main указывается OS::start. Программа компилируется при помощи утилиты vmbuild в один исполняемый файл, который объединяет в себе ядро, загрузчик, статически скомпонованные библиотеки и само приложение. Программа выполняется на нулевом кольце защиты процессора (ring 0) в общем адресном пространстве (одна программа-сервис на одно окружение).

IncludeOS пока позиционируется как рабочий прототип, который не поддерживает все запланированные возможности, например, сетевой стек не поддерживает IPv6, а набор библиотек не включает средств для запуска многопоточных программ. Из планов на будущее отмечается поддержка TLS, RESTful API, поддержка интеграции БД SQLite и MongoDB, возможность использования модулей и подготовка пакетного менеджера, поддержка IPv6 и доведение IPv4-стека до полноценного вида.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «В рамках проекта IncludeOS развивается ядро для обособленного запуска C++-приложений», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.