1
Не в сети
Сообщений: 3329
Благодарностей: 391
Предупреждений:
Из: Russia Усть-Илимск
Род занятий: Электромонтёр

Singularity - исследовательский проект Microsoft Research, который начался с вопроса: на что была бы похожа программная платформа, если спроектировать ее на пустом месте, и во главу угла поставить не производительность, а надежность?. Ключевой аспект Singularity – модель расширения, построенная на программно-изолированных процессах (Software-Isolated Process, SIP), которые инкапсулируют части приложения или системы и обеспечивают сокрытие информации, изоляцию сбоев и строго типизированный интерфейс. SIP используются по всей ОС и прикладном ПО.

SIP в Singularity – это процессы ОС. Весь код за пределами ядра исполняется в SIP-ах. SIP отличаются от обычных процессов ОС следующим:

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

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

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

Целостность SIP-ов зависит от безопасности языков и от распространяющегося на всю систему инварианта, говорящего, что процесс не может содержать ссылок на объектное пространство другого процесса.

Очевидно, что обеспечение безопасности кода крайне существенно. В настоящее время Singularity полагается на проверку исходного и промежуточного кода компилятором. В будущем типизированный ассемблер (Typed Assembly Language, TAL) позволит Singularity проверять безопасность скомпилированного кода. TAL требует, чтобы исполняемый модуль программы предоставлял доказательства своей типобезопасности (что в случае безопасных языков может делаться компилятором автоматически). Проверка корректности таких доказательств и того, что они применимы для инструкций в исполняемом модуле – прямолинейная задача для простого верификатора из нескольких тысяч строк кода. Такая стратегия сквозной проверки исключает компилятор – большую, сложную программу – из проверенной основы Singularity. Верификатор должен быть тщательно продуман, реализован и проверен, но эти задачи вполне выполнимы благодаря его простоте и размеру.

Инвариант независимости памяти (memory independence invariant), запрещающий использование указателей между объектными пространствами, служит нескольким целям. Во-первых, он улучшает абстракцию данных и изоляцию процесса, скрывая детали реализации и предотвращая появление висячих указателей (dangling pointers) на выгруженные процессы. Во-вторых, он ослабляет ограничения при реализации, позволяя процессам использовать разные исполняющие системы и их сборщики мусора. В-третьих, он делает прозрачными учет и восстановление ресурсов, благодаря однозначно монопольному использованию памяти процессом. Наконец, это упрощает интерфейс ядра, устраняя потребность управлять множеством типов указателей и адресных пространств.

Главное возражение против такой архитектуры – сложность коммуникаций посредством передачи сообщений по сравнению с гибкостью совместного использования данных. В Singularity эта проблема решается использованием эффективной системы сообщений, расширений языков программирования, сжато описывающих коммуникацию через каналы, и средств верификации.
Singularity RDK 2.0
Microsoft Singularity — Википедия
Проект Singularity: обзор

Хотелось бы побольше узнать об этом проекте...

#179007   | 10.09.09 18:42
Не в сети
Сообщений: 1140
Благодарностей: 169
Предупреждений:
Из: Russia Интернет
Род занятий: IT Enthusiast

Вот еще краткий обзор.

#179014   | 10.09.09 20:44
Все права принадлежат © MSInsider.ru (ex TheVista.ru), 2019
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.032 секунд (Общее время SQL: 0.009 секунд - SQL запросов: 41 - Среднее время SQL: 0.00021 секунд))