Unikernel

редактировать
Сравнение традиционного стека ОС и unikernel MirageOS

A unikernel - это специализированный, машинный образ с единым адресным пространством, созданный с использованием библиотек операционных систем. Разработчик выбирает из модульного стека минимальный набор библиотек, который соответствует конструкциям ОС, необходимым для запуска их приложения. Затем эти библиотеки компилируются с приложением и кодом конфигурации для создания запечатанных образов фиксированного назначения (unikernels), которые запускаются непосредственно на гипервизоре или аппаратном обеспечении без промежуточной ОС, такой как Linux или Windows.

Первыми такими системами были Exokernel и Nemesis в конце 1990-х годов.

Содержание
  • 1 Дизайн
  • 2 Примеры
  • 3 См. Также
  • 4 Ссылки
  • 5 Внешние ссылки
Дизайн

В операционной системе библиотеки границы защиты перемещены на самые низкие уровни оборудования, в результате чего:

  1. набор библиотек, реализующих механизмы, такие как те, которые необходимы для управления оборудованием или сетевых протоколов;
  2. набор политик, обеспечивающих контроль доступа и изоляцию в прикладной уровень.

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

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

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

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

Было показано, что уникальные ядра на 4% меньше размер эквивалентных кодовых баз с использованием традиционной ОС.

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

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

Unikernels поддаются созданию систем, которые следуют сервис-ориентированной или микросервисы архитектуры программного обеспечения.

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

Примеры

Существует ряд новых подходов к построению уникальных ядер, которые находятся на разной степени зрелости.

  • ClickOS - это высокопроизводительная виртуализированная программная промежуточная платформа, основанная на виртуализации с открытым исходным кодом. Ранний анализ производительности показывает, что виртуальные машины ClickOS малы (5 МБ), загружаются быстро (всего 20 миллисекунд), имеют небольшую задержку (45 микросекунд) и могут одновременно запускаться более 100, насыщая канал 10 ГБ на недорогом стандартном сервере.
  • Clive - это операционная система, разработанная для работы в средах распределенных и облачных вычислений, написанная на языке программирования Go.
  • Drawbridge - это исследовательский прототип новой формы виртуализации для изолированной программной среды приложений. Drawbridge сочетает в себе две основные технологии: пикопроцесс, который представляет собой контейнер изоляции на основе процессов с минимальной поверхностью API ядра, и библиотечную ОС, которая представляет собой версию Windows, предназначенную для эффективной работы в пикопроцессе.
  • Графен Библиотечная ОС - это Linux-совместимая библиотечная операционная система, которая ориентирована на защиту многопроцессорных, серверных или устаревших приложений типа оболочки. Графен охватывает многопроцессорное приложение через несколько пикопроцессов, при этом межпроцессные абстракции (например, сигналы, очереди сообщений, семафоры) координируются с помощью простых конвейерных потоков. Для приложений с несколькими принципами безопасности Graphene может динамически изолировать небезопасный пикопроцесс.
  • Облегченная виртуальная машина Haskell (HaLVM ) является портом инструмента Glasgow Haskell Compiler пакет, который позволяет разработчикам писать высокоуровневые легковесные виртуальные машины, которые могут работать непосредственно на гипервизоре Xen.
  • HermitCore - это новое ядро, нацеленное на масштабируемое и предсказуемое поведение среды выполнения для высокопроизводительных вычислений и облачных сред. HermitCore поддерживает C, C ++, Fortran, Go, Pthreads, OpenMP и iRCCE в качестве библиотеки передачи сообщений. Это исследовательский проект, который расширяет многоядерный подход и сочетает его с функциями unikernel. HermitCore может работать непосредственно на гипервизоре KVM, а также изначально на архитектуре x86_64.
  • HermiTux - это эволюция HermitCore и исследовательский проект, нацеленный на запуск как неизмененных двоичных файлов приложений Linux на одном ядре. 125>IncludeOS - это минимальная сервисно-ориентированная операционная система с открытым исходным кодом и включаемыми библиотеками для облачных сервисов. Он разработан для запуска кода C ++ на виртуальном оборудовании.
  • LING - это юникерн, основанный на Erlang / OTP и понимающий файлы.beam. Разработчики могут создавать код на Erlang и развертывать его как unikernels LING. LING удаляет большую часть векторных файлов, использует только три внешние библиотеки и не использует OpenSSL.
  • MirageOS - это операционная система с чистыми библиотеками, которая создает одноядерные ядра для безопасных, высокопроизводительных сетевых приложений в различных облачных вычислениях и мобильные платформы. В настоящее время существует более 100 библиотек MirageOS и растущее число совместимых библиотек в более широкой экосистеме OCaml.
  • OSv - это новая ОС, разработанная специально для облачных виртуальных машин от Cloudius Systems. OSv может загружаться менее чем за секунду и изначально спроектирован для выполнения одного приложения поверх любого гипервизора, что обеспечивает превосходную производительность, скорость и простое управление. OSv может запускать неизмененные исполняемые файлы Linux (с некоторыми ограничениями) и поддерживать C, C ++, JVM, Ruby и Node. js доступны стеки приложений.
  • Rumprun - это программный стек, который позволяет запускать существующее немодифицированное программное обеспечение POSIX как единое ядро. Rumprun поддерживает несколько платформ, от аппаратного обеспечения ARM до гипервизоров, таких как Xen. Он основан на ядре NetBSD rump, которое предоставляет бесплатные, портативные, компонентные драйверы качества ядра, такие как файловые системы, обработчики системных вызовов POSIX, драйверы устройств PCI, стек протоколов SCSI, virtio и TCP / IP. stack.
  • Runtime.js - это операционная система библиотеки с открытым исходным кодом для облака, которая работает на виртуальной машине JavaScript, может быть объединена с приложением и развернута как легкий и неизменяемый образ виртуальной машины. Runtime.js построен на движке Javascript V8 и в настоящее время поддерживает гипервизор QEMU /KVM.
  • Nanos - это уникальное ядро, работающее на Гипервизоры QEMU / KVM и Xen. Он может загружать произвольные двоичные файлы ELF и реализуется сборщиком / оркестратором «OPS».
  • TamaGo - это фреймворк, который позволяет компилировать и выполнять незагруженные приложения Go на голых металлических платах на базе ARM SoC, поддержка создания уникальных ядер Go без какой-либо прямой или косвенной зависимости от других компонентов или языков программирования.
  • Unikraft : высокоуровневая цель Unikraft состоит в том, чтобы иметь возможность создавать уникальные ядра, нацеленные на конкретные приложения, не требуя затрат времени, экспертная работа, которая требуется сегодня для создания такого единственного ядра. Дополнительная цель (или надежда) Unikraft заключается в том, что все разработчики, заинтересованные в разработке unikernel, будут вносить свой вклад, поставляя библиотеки, а не работая над независимыми проектами с другой кодовой базой, как это делается сейчас.
См. Также
Ссылки
Внешние ссылки

.

Последняя правка сделана 2021-06-20 11:07:05
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте