stringtranslate.com

Unikernel

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

Unikernel — это компьютерная программа, статически связанная с кодом операционной системы , от которой она зависит. Unikernels создаются с помощью специализированного компилятора , который идентифицирует службы операционной системы, используемые программой, и связывает ее с одной или несколькими библиотечными операционными системами , которые их предоставляют. Такая программа не требует отдельной операционной системы и может работать вместо этого как гостевая программа гипервизора . [1]

Архитектура unikernel основана на концепциях, разработанных Exokernel и Nemesis в конце 1990-х годов.

Дизайн

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

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

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

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

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

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

Пример клиента обмена сообщениями на базе Unikernel имеет размер около 4% от эквивалентной кодовой базы, использующей Linux. [7]

Благодаря своей конструкции, можно выполнять оптимизацию всей системы в драйверах устройств и логике приложений, тем самым улучшая специализацию. [8] [9] [10] Например, готовые приложения, такие как nginx, SQLite и Redis, работающие на Unikernel, показали улучшение производительности в 1,7–2,7 раза. [11]

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

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

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

Смотрите также

Ссылки

  1. ^ ab "Unikernels: Rise of the Virtual Library Operating System" . Получено 31 августа 2015 г. .
  2. ^ Таненбаум, Эндрю С. (2008). Современные операционные системы (3-е изд.). Prentice Hall. стр. 50–51. ISBN 978-0-13-600663-3. . . . почти все системные вызовы [вызываются] из программ на языке C путем вызова библиотечной процедуры . . . Библиотечная процедура . . . выполняет инструкцию TRAP для переключения из пользовательского режима в режим ядра и запуска выполнения . . .
  3. ^ Переключение контекста#Переключение режима пользователя и ядра
  4. ^ Чиа-Че, Цай; Арора, Кумар-Саурабх; Банди, Нихал; Джейн, Бхушан; Джаннен, Уильям; Джон, Джитин; Калоднер, Гарри; Кулкарни, Врушали; Оливера, Даниэла; Портер, Дональд Э. (2014). «Сотрудничество и изоляция безопасности библиотечных ОС для многопроцессных приложений». Труды Девятой Европейской конференции по компьютерным системам (PDF) . стр. 1–14. CiteSeerX 10.1.1.589.1837 . doi :10.1145/2592798.2592812. ISBN  9781450327046. S2CID  13771821. Архивировано из оригинала (PDF) 2016-03-04 . Получено 2015-08-31 .
  5. ^ «Почему Unikernels может улучшить безопасность Интернета». Апрель 2015 г. Получено 31 августа 2015 г.
  6. ^ Мадхавапедди, Анил; Мортье, Ричард; Харалампос, Ротсос; Скотт, Дэвид; Сингх, Балрадж; Газаньер, Томас; Смит, Стивен; Хэнд, Стивен; Кроукрофт, Джон (март 2013 г.). «Unikernels: библиотечные операционные системы для облака» (PDF) . Уведомления SIGPLAN (ASPLOS 13) . 48 (4): 461. doi :10.1145/2499368.2451167.
  7. ^ Калопер-Мершиняк, Дэвид; Менерт, Ханнес; Мадхавапедди, Анил; Сьюэлл, Питер (2015). «Не совсем так сломанный TLS: уроки реорганизации спецификации и реализации протокола безопасности». Труды 24-го симпозиума по безопасности USENIX (Безопасность USENIX 15) .
  8. ^ Тибо, Сэмюэл; Диган, Тим (2008). «Повышение производительности путем встраивания приложений HPC в легкие домены Xen» (PDF) . 2-й семинар по системной виртуализации для высокопроизводительных вычислений (HPCVIRT'08) . doi :10.1145/1435452.1435454.
  9. ^ Мадхавапедди, Анил; Мортье, Ричард; Сохан, Рипдуман; Газаньер, Томас; Хэнд, Стивен; Диган, Тим; Маколи, Дерек; Кроукрофт, Джон (2010). «Turning Down the LAMP: Software Specialisation for the Cloud» (PDF) . Труды 2-й конференции USENIX по актуальным темам в области облачных вычислений .
  10. ^ Мартинс, Жоао; Мохамед, Ахмед; Райчиу, Костин; Уичи, Фелипе (2013). «Включение быстрой, динамической сетевой обработки с помощью clickOS». Труды второго семинара ACM SIGCOMM по актуальным темам в программно-определяемых сетях (PDF) . стр. 67–72. doi :10.1145/2491185.2491195. ISBN 9781450321785. S2CID  12514038.
  11. ^ Кюнцер, Саймон; Бадою, Влад-Андрей; Лефевр, Гюго; Сантанам, Шаран; Юнг, Александр; Выиграй, Готье; Солдани, Кирилл; Лупу, Костин; Теодореску, Штефан; Рэдукану, Кости; Бану, Кристиан (21 апреля 2021 г.). «Unikraft: быстрые специализированные юникеры — простой путь». Материалы шестнадцатой Европейской конференции по компьютерным системам . Онлайн-мероприятие Великобритания: ACM. стр. 376–394. arXiv : 2104.12721 . дои : 10.1145/3447786.3456248. ISBN 978-1-4503-8334-9. S2CID  241528818.
  12. ^ "Just-in-Time Summoning of Unikernels (v0.2)". Магнус Скьегстад . Получено 30 августа 2015 г.
  13. ^ "Zerg". Zerg — демонстрация экземпляра по запросу . Получено 30 августа 2015 г.
  14. ^ Мадхавапедди, Анил; Леонард, Томас; Скьегстад, Магнус; Газаньер, Томас; Шитс, Дэвид; Скотт, Дэвид; Мортье, Ричард; Чаудхри, Амир; Сингх, Балрадж; Ладлам, Джон; Кроукрофт, Джон; Лесли, Ян (2015). "Jitsu: Just-In-Time Summoning of Unikernels" (PDF) . 12-я конференция USENIX по проектированию и внедрению сетевых систем (NSDI) . ISBN 978-1-931971-218.

Внешние ссылки