Новости Software за день

В Microsoft Research построили ОС на микроядре
Корпорация Microsoft не зря содержит у себя отдел, отвечающий за исследования. Специалисты Microsoft Research создали операционную систему с микроядерной архитектурой.

Справка: "Современная тенденция в разработке операционных систем состоит в перенесении значительной части системного кода на уровень пользователя и одновременной минимизации ядра. Речь идет о подходе к построению ядра, называемом микроядерной архитектурой (microkernel architecture) операционной системы, когда большинство её составляющих являются самостоятельными программами. В этом случае взаимодействие между ними обеспечивает специальный модуль ядра, называемый микроядром. Микроядро работает в привилегированном режиме и обеспечивает взаимодействие между программами, планирование использования процессора, первичную обработку прерываний, операции ввода-вывода и базовое управление памятью. Остальные компоненты системы взаимодействуют друг с другом путем передачи сообщений через микроядро.
Основное достоинство микроядерной архитектуры - высокая степень модульности ядра операционной системы. Это существенно упрощает добавление в него новых компонентов. В микроядерной операционной системе можно, не прерывая ее работы, загружать и выгружать новые драйверы, файловые системы и т. д. Существенно упрощается процесс отладки компонентов ядра, так как новая версия драйвера может загружаться без перезапуска всей операционной системы. Компоненты ядра операционной системы ничем принципиально не отличаются от пользовательских программ, поэтому для их отладки можно применять обычные средства. Микроядерная архитектура повышает надежность системы, поскольку ошибка на уровне непривилегированной программы менее опасна, чем отказ на уровне режима ядра.
В то же время микроядерная архитектура операционной системы вносит дополнительные накладные расходы, связанные с передачей сообщений, что существенно влияет на производительность. Для того чтобы микроядерная операционная система по скорости не уступала операционным системам на базе монолитного ядра, требуется очень аккуратно проектировать разбиение системы на компоненты, стараясь минимизировать взаимодействие между ними. Таким образом, основная сложность при создании микроядерных операционных систем - необходимость очень аккуратного проектирования".

"Основы операционных систем", авторы: Карпов В.Е. , Коньков К.А.


Проект, начало которому было положено около двух лет назад, разместился в 300 тысячах строк кода... Для сравнения, на момент анонса ядра Linux версии 2.6, последнее разместилось в 4.2 миллиона строк кода, правда, при этом проскакивали пояснения вроде того, что до 50% из этих четырёх миллионов - "драйверный код". Ну, а операционная система Windows XP целиком может "похвастаться" сорока миллионами строк кода...

Новый проект Microsoft был назван Singularity, и он не имеет никаких связей с линейкой операционных систем Windows, будучи создан с чистого листа. Как говорят сами создатели, основная задача, которая была им поставлена - добиться максимальной надёжности программного продукта. Проект Singularity строится на достижениях современных языков программирования, и реализовывает новую системную архитектуру, с целью построения устойчивой и максимально надёжной операционной системы. Как пишут в документе An Overview of Singularity Project сами создатели, у современного аппаратного обеспечения производительность растёт по экспоненциальной зависимости, в то время как программное обеспечение редко изменяется фундаментально, а скорее - эволюционирует. Однако встаёт задача по переосмыслению происходящего и возникает необходимость пересмотра старых постулатов и методов их реализации.

Как уже говорилось, проект Singularity - использует преимущества современных языков программирования (в первую очередь - C#) и прочий инструментарий - для создания такого окружения, в котором программное обеспечение вероятнее всего будет построено корректно, его поведение будет легко проверить, а возникающие в его работе ошибки сократятся и будут предотвращаться.

Ключевым аспектом проекта Singularity является модель расширения, основанная на принципах Software-Isolated Processes (сокращенно SIP) - это когда процессы в операционной системе запускаются в специальных контейнерах, изолированных друг от друга. Весь код за пределами ядра исполняется в SIP, которые являются контейнерами объектов, а не адресными полями. Два процесса в Singularity не могут одновременно получить доступ к объекту. Коммуникации между процессами передают исключительные права над конкретными данными. Вообще, SIP - закрытый контейнер кода. Процесс не может динамически загружать или генерировать код. SIP для изолирования не полагается на аппаратное управление памятью, - контейнер может находиться как в физическом, так и виртуальном адресном пространстве.


Ядро Singularity практически полностью состоит из безопасного кода, а вся остальная система, исполняемая в SIP, состоит исключительно из безопасного кода, поддающегося проверке и контролю (сюда включаются драйверы устройств, системные процессы и приложения). В то время, как весь ненадёжный код должен быть проверяемым на безопасность, некоторые части ядра Singularity и системы поддержки исполнения программ, именуемые trusted base, не проверяются на безопасность, но средства написания безопасного кода в языке программирования защищают этот доверенный базис от ненадёжного кода.

Нынешняя операционная система Windows поддерживает около сотни тысяч драйверов от сторонних разработчиков. Различное программное обеспечение имеет расширяемый с помощью плагинов функционал. Платой за всё это является низкая надёжность системы. Так, считается, что до 85% сбоев и зависаний операционной системы Windows вызваны некорректной работой драйверов. В Singularity для инкапсуляции используются SIP. Каждый драйвер устройства, каждое приложение и каждое расширение запускается в своём собственном контейнере, и сообщается через каналы, обеспечивающие ограниченный необходимый функционал. Если код в контейнере приводит к сбою, контейнер закрывается, и система возвращает себе ресурсы, оповещая о закрытии контейнера все процессы, которые были с ним связаны. Таким образом, восстановление после ошибки является полностью локальным, и упрощено чёткими и ясными протоколами каналов коммуникаций между SIP-контейнерами.

В настоящее время никаких планов о создании коммерческого продукта на базе Singularity у корпорации Microsoft нет. Однако известно, что идеи, генерируемые данным проектом, тщательно изучаются в святая святых корпорации - Microsoft Core Operating System Division, а также принимаются к сведению в подразделениях софтверного гиганта, отвечающих за информационную безопасность. В настоящее время уже имеется некий прототип ядра Singularity, позволяющий надстраивать над собой различные компоненты. Технические подробности и участки кода приведены в документе An Overview of Singularity Project, доступном в формате PDF по ссылке, приведённой в конце новости. Там же вы найдёте ссылку на страничку проекта (ресурсы Microsoft Research).

An Overview of Singularity Project (около 277 Кбайт): линк

Страница проекта Singularity: http://research.microsoft.com/os/singularity/
Автор: Алексей Перевертайлов Дата: 27.11.2005 06:49