После семи месяцев разработки анонсирован релиз облачной операционной системы Mirage OS 2.0, которая обеспечивает возможность запуска приложений, написанных на языке OCaml, поверх гипервизора. Mirage OS позволяет создавать операционные системы одного приложения, содержащие только компоненты, необходимые для запуска одной программы, без необходимости использования традиционных операционных систем с универсальным ядром, утилитами и набором библиотек. В разработке Mirage OS принимают участие исследователи из Кембриджского университета, компании Citrix, проектов Xen, FreeBSD, Galois и OCamlPro.

Разработка программ производится в традиционных ОС, после чего при помощи Mirage OS программа компилируется в самодостаточное специализированное ядро (концепция unikernel), которое может запускаться непосредственно поверх гипервизора Xen или в форме процесса в POSIX-совместимом окружении. Сгенерированное окружение не содержит ничего лишнего и взаимодействует непосредственно с гипервизором без драйверов и системных прослоек, что позволяет добиться существенного снижения накладных расходов и повышения безопасности.

Работа с Mirage сводится к трём стадиям:

  • Подготовка конфигурации с определением используемых в окружении OPAM-пакетов;
  • Сборка окружения;
  • Запуск и контроль за выполнением окружения (Mirage сам создаст файлы конфигурации для Xen и запустит окружение).

Несмотря на то, что приложения и библиотеки формируются на высокоуровневом языке OCaml, итоговые окружения демонстрируют достаточно неплохую производительность. Например, реализация DNS-сервера на языке OCaml на 25% обогнала по числу обработанных в секунду запросов DNS-сервер на базе BIND 9. При этом размер окружения на базе Mirage OS составил всего 200 Кб, в том время как размер образа виртуального окружения с традиционной системой и BIND 9 превысил 450 Мб.

Упрощается и сопровождение окружений, так как при необходимости обновления программы или изменения конфигурации, достаточно создать и запустить новое окружение. Поддерживается несколько десятков библиотек на языке OCaml для выполнения сетевых операций (DNS, SSH, OpenFlow, HTTP, XMPP и т.п.), работы с хранилищами и обеспечения параллельной обработки данных. В будущем ожидается обеспечение работы окружений Mirage OS в форме модулей ядра FreeBSD или поверх JavaScript-движков.

В процессе подготовки Mirage OS 2.0 основная работа была сосредоточена на обеспечении применения Mirage OS для создания применимых в практике проектов. Из добавленных улучшений можно отметить:

  • Поддержка формирования окружений для архитектуры ARM, что позволяет использовать Mirage OS на таких платах, как Cubieboard 2.
  • Реализована распределённая БД Irmin, поддерживающая создание ответвлений, снапшоты, откат изменений и синхронизацию в стиле Git. БД оформлена в виде библиотеки, написанной на языке OCaml и поддерживающей компиляцию в Javascript;
  • Представлен проект OCaml TLS, в рамках которого подготовлена высокопроизводительная и надёжная реализация протокола TLS, написанная на языке OCaml;
  • Реализованы новые компоненты модульного TCP/IP-стека на OCaml;
  • Подготовлен протокол Vchan для обмена сообщениями между виртуальными окружениями;
  • Добавлена библиотека ctypes, предоставляющая средства для организации взаимодействия с внешними библиотеками на языке Си.


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