stringtranslate.com

Юникернел

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

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

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

Дизайн

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

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

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

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

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

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

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

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

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

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

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

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

Рекомендации

  1. ^ ab «Unikernels: развитие операционной системы виртуальной библиотеки» . Проверено 31 августа 2015 г.
  2. ^ Таненбаум, Эндрю С. (2008). Современные операционные системы (3-е изд.). Прентис Холл. стр. 50–51. ISBN 978-0-13-600663-3. . . . почти все системные вызовы вызываются из программ на языке C путем вызова библиотечной процедуры. . . Библиотечная процедура. . . выполняет инструкцию TRAP для переключения из пользовательского режима в режим ядра и начала выполнения. . .
  3. ^ Переключение контекста # Переключение режима пользователя и ядра
  4. ^ Чиа-Че, Цай; Арора, Кумар-Саураб; Банди, Нехал; Джайн, Бхушан; Яннен, Уильям; Джон, Джитин; Калоднер, Гарри; Кулкарни, Врушали; Оливьера, Даниэла; Портер, Дональд Э. (2014). «Сотрудничество и изоляция безопасности библиотечных операционных систем для многопроцессных приложений». Материалы Девятой Европейской конференции по компьютерным системам (PDF) . стр. 1–14. CiteSeerX 10.1.1.589.1837 . дои : 10.1145/2592798.2592812. ISBN  9781450327046. S2CID  13771821. Архивировано из оригинала (PDF) 4 марта 2016 г. Проверено 31 августа 2015 г.
  5. ^ «Почему Unikernels может улучшить интернет-безопасность» . Апрель 2015 года . Проверено 31 августа 2015 г.
  6. ^ Мадхавапедди, Анил; Мортье, Ричард; Харалампос, Ротсос; Скотт, Дэвид; Сингх, Балрадж; Газаньер, Томас; Смит, Стивен; Хэнд, Стивен; Кроукрофт, Джон (март 2013 г.). «Unikernels: библиотечные операционные системы для облака» (PDF) . Уведомления SIGPLAN (ASPLOS 13) . 48 (4): 461. дои : 10.1145/2499368.2451167.
  7. ^ Калопер-Мершиняк, Дэвид; Менерт, Ханнес; Мадхавапедди, Анил; Сьюэлл, Питер (2015). «Не такой уж и сломанный TLS: уроки реорганизации спецификации и реализации протокола безопасности». Материалы 24-го симпозиума по безопасности USENIX (USENIX Security 15) .
  8. ^ Мадхавапедди, Анил; Мортье, Ричард; Сохан, Рипдуман; Газаньер, Томас; Хэнд, Стивен; Диган, Тим; Маколи, Дерек; Кроукрофт, Джон (2010). «Выключение лампы: специализация программного обеспечения для облака» (PDF) . Материалы 2-й конференции USENIX по актуальным темам облачных вычислений .
  9. ^ Мартинс, Жоао; Мохамед, Ахмед; Райчу, Костин; Уичи, Фелипе (2013). «Включение быстрой и динамической сетевой обработки с помощью clickOS». Материалы второго семинара ACM SIGCOMM «Актуальные темы программно-конфигурируемых сетей» (PDF) . стр. 67–72. дои : 10.1145/2491185.2491195. ISBN 9781450321785. S2CID  12514038.
  10. ^ Кюнцер, Саймон; Бадою, Влад-Андрей; Лефевр, Гюго; Сантанам, Шаран; Юнг, Александр; Выиграй, Готье; Солдани, Кирилл; Лупу, Костин; Теодореску, Штефан; Рэдукану, Кости; Бану, Кристиан (21 апреля 2021 г.). «Уникрафт». Материалы шестнадцатой Европейской конференции по компьютерным системам . Онлайн-мероприятие Великобритания: ACM. стр. 376–394. arXiv : 2104.12721 . дои : 10.1145/3447786.3456248. ISBN 978-1-4503-8334-9. S2CID  241528818.
  11. ^ «Мгновенный вызов Unikernels (v0.2)» . Магнус Скьегстад . Проверено 30 августа 2015 г.
  12. ^ "Зерг". Зерг — демонстрация экземпляра по запросу . Проверено 30 августа 2015 г.
  13. ^ Мадхавапедди, Анил; Леонард, Томас; Скьегстад, Магнус; Газаньер, Томас; Шитс, Дэвид; Скотт, Дэвид; Мортье, Ричард; Чаудри, Амир; Сингх, Балрадж; Лудлам, Джон; Кроукрофт, Джон; Лесли, Ян (2015). Джитсу: своевременный вызов одноядерных процессоров (PDF) . ISBN 978-1-931971-218. {{cite book}}: |journal=игнорируется ( помощь )

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