Специализированное ядро
Такие ядра создаются с помощью специализированного компилятора, который находит используемые прикладной программой сервисы операционной системы, и статически связывает их с их реализациями в соответствующих системных библиотеках. Такая программа не требует отдельной операционной системы и может работать в качестве «гостя» гипервизора[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]. С другой стороны, из-за высокой степени специализации, такие ядра не подходят для многопользовательского вычислений общего назначения, для которых обычно используют традиционные операционные системы. Добавление дополнительной функциональности или изменение уже скомпилированного специализированного ядра обычно невозможно, вместо этого собирается и развертывается новое ядро с требуемыми изменениями. См. такжеСсылки
Внешние ссылки |
Portal di Ensiklopedia Dunia