Меню
Главная
Случайная статья
Настройки
|
Специализированное ядро (unikernel) — это тип компьютерной программы, которая статически скомпонована с кодом используемой ей функциональности в операционной системе.
Такие ядра создаются с помощью специализированного компилятора, который находит используемые прикладной программой сервисы операционной системы, и статически связывает их с их реализациями в соответствующих системных библиотеках.
Такая программа не требует отдельной операционной системы и может работать в качестве «гостя» гипервизора[1].
Архитектура специализированного ядра основана на идеях конца 1990-х годов: концепциях экзоядра и операционной системы Nemesis.
Содержание
Архитектура
В подобной «библиотечной операционной системе» границы безопасности смещены к самым нижним, аппаратным уровням, что приводит к:
- набору библиотек работы с оборудованием или реализации сетевых протоколов;
- набору правил контроля доступа и изоляции на уровне приложений.
У «библиотечной ОС» есть преимущества и недостатки по сравнению с традиционной архитектурой операционных систем.
Например, т.к. используется единое адресное пространство, нет необходимости в постоянной проверке прав при перемещении данных между пользовательским пространством и ядром, и тем самым улучшается производительность за счет прямого доступа к аппаратным ресурсам.
В традиционных операционных системах этот переход требует некоторой операции прерывания TRAP[2], более ресурсоемкой, чем обычное переключение контекста.
Устранение копирования данных между пользовательским пространством и ядром системы, также может улучшить производительность, хотя это возможно и в традиционных операционных системах с «zero-copy» драйверами устройств.
С другой стороны, отсутствие такого разделения в «библиотечной ОС» может усложнить работу нескольких параллельно запущенных приложений при сильно изолированных ресурсах[3]. К тому же, потребуются драйвера устройств для используемого «библиотечной ОС» оборудования, а из-за постоянной эволюции аппаратного окружения требуется постоянно их адаптировать.
Виртуализация ОС частично решает эти проблемы на стандартном оборудовании.
Современный гипервизор предоставляет виртуальным машинам время ЦП и сильно изолированные виртуальные устройства. «Библиотечной ОС» запущенной в виде виртуальной машины, нужны только стабильные драйверы для этих виртуальных устройств, а реальным физическим оборудованием управляет гипервизор.
Однако все еще нужны библиотеки протоколов, чтобы заменить службы традиционной ОС, и создание таких библиотек — основная работа при внедрении современной библиотечной ОС[1].
Кроме того, зависимость от гипервизора вводит накладные расходы при переключении между специализированным ядром и гипервизором, а также при передаче данных в виртуальные устройства.
Уменьшение используемого кода сокращает поверхность атаки и улучшает информационную безопасность
[4][5][6]. Например, размер клиента мессенджера может быть всего 4% от аналогичной реализации на Linux[7].
Также, при статической компиляции и компоновке, можно выполнить глобальную оптимизацию всей системы, включая драйверы устройств и логику приложений, улучшая специализацию[8][9][10].
Например, таким образом собранные nginx, SQLite и Redis показали повышение производительности в 1,7-2,7 раз[11].
Специализированные ядра могут запускаться настолько быстро, что успевают обработать входящие запрос, в отличие от традиционных систем, где требуется загрузить ядро и сервисы для готовности к обслуживанию[12][13][14].
Использование специализированных ядер хорошо подходит для систем использующих
сервис-ориентированную архитектуру или микросервисы[15][16][17]. С другой стороны, из-за высокой степени специализации, такие ядра не подходят для многопользовательского вычислений общего назначения, для которых обычно используют традиционные операционные системы. Добавление дополнительной функциональности или изменение уже скомпилированного специализированного ядра обычно невозможно, вместо этого собирается и развертывается новое ядро с требуемыми изменениями.
См. также
Ссылки
- 1 2 Unikernels: Rise of the Virtual Library Operating System (неопр.). Дата обращения: 31 августа 2015.
- Tanenbaum, Andrew S. Modern Operating Systems. — 3rd. — Prentice Hall, 2008. — P. 50–51. — «. . . nearly all system calls [are] invoked from C programs by calling a library procedure . . . The library procedure . . . executes a TRAP instruction to switch from user mode to kernel mode and start execution . . .». — ISBN 978-0-13-600663-3.
- Chia-Che, Tsai. Cooperation and security isolation of library OSes for multi-process applications // Proceedings of the Ninth European Conference on Computer Systems / Tsai Chia-Che, Kumar-Saurabh Arora, Nehal Bandi … [и др.]. — 2014. — P. 1–14. — ISBN 9781450327046. — doi:10.1145/2592798.2592812.
- Why Unikernels Can Improve Internet Security (неопр.) (апрель 2015). Дата обращения: 31 августа 2015.
- Madhavapeddy, Anil; Mortier, Richard; Charalampos, Rotsos; Scott, David; Singh, Balraj; Gazagnaire, Thomas; Smith, Steven; Hand, Steven; Crowcroft, Jon (Март 2013). Unikernels: Library Operating Systems for the Cloud (PDF). SIGPLAN Notices (ASPLOS 13). 48 (4): 461. doi:10.1145/2499368.2451167.
- Как сделать контейнеры еще более изолированными: обзор контейнерных sandbox-технологий
-
-
-
- Martins, Joao. Enabling fast, dynamic network processing with clickOS // Proceedings of the second ACM SIGCOMM workshop on Hot topics in software defined networking / Joao Martins, Ahmed Mohamed, Costin Raiciu … [и др.]. — 2013. — P. 67–72. — ISBN 9781450321785. — doi:10.1145/2491185.2491195.
- Kuenzer, Simon. Unikraft: fast, specialized unikernels the easy way // Proceedings of the Sixteenth European Conference on Computer Systems : [англ.] / Simon Kuenzer, Vlad-Andrei Bdoiu, Hugo Lefeuvre … [et al.]. — Online Event United Kingdom : ACM, 2021-04-21. — P. 376–394. — ISBN 978-1-4503-8334-9. — doi:10.1145/3447786.3456248.
- Just-in-Time Summoning of Unikernels (v0.2) (неопр.). Magnus Skjegstad. Дата обращения: 30 августа 2015.
- Zerg (неопр.). Zerg — an instance per request demo. Дата обращения: 30 августа 2015.
-
- Есть ли альтернатива контейнерам?
- Первый прототип: Unikernels как этап в эволюции Linux
- Модули, монолиты и микросервисы
Внешние ссылки
|
|