mailinfo.ru - Новости

ОС от Microsoft с ядром на C#...»

25 сентября 2006

По теме заметки "Singularity - экспериментальную ОС повышенной надежности от Microsoft"

Архитектура ОС спроектирована с нуля с упором на надежность вместо производительности. Однако за счет продвинутой архитектуры производительность получилась на уровне других ОС.

95% ядра и весь UserMode написан на Sing# - расширении Spec# который в свою очередь является расширением C#.

Вся ОС (ядро, драйвера и приложения) работает в x86 protected mode ring 0. Изоляция процессов от ядра и друг от друга реализована программно - код проверяется на нарушающие целостность инструкции в процессе загрузки. MMU (модуль процессора для защиты и виртуализации памяти) не используется вообще, все процессы находятся в едином линейном адресном пространстве.

Отсутствует возможность запустить самомодифицирующийся код, разделять память между процессами а также подгружать DLL в адресное пространство в процессе работы. Делается упор на отказ от DLL-модулей и shared memory в пользу дочерних процессов и использования высокоэффективных Message Passing IPC.

Подобно QNX, каждый драйвер работает в отдельном процессе, столь же изолированном как и остальные процессы. Взаимодействие с железом выполняется через HAL API. Единственным способом повредить систему являются DMA-операции. Единое адресное пространство позволяет реализовать zero-copy I/O.

Отсутствие утечек памяти гарантируется обязательным garbage collector. Даже ядро использует gc.

Приложение на этапе компиляции указывает версию Kernel ABI и тип алгоритма сборки мусора, что упраздняет традиционную концепцию достижения обратной совместимости "one size fits all". Все прочие API устанавливаются подобно .NET side by side assemblies. Строго говоря, жирный набор системного API Windows заменяется на более традиционный ограниченный набор системных вызовов (всего 126 в текущей версии).

Да, собственно ядро - это обычный native-код скомпилированный из MSIL экспериментальным оптимизирующим компилятором Barton. Приложения тоже по-видимому обычные native, но скомпилированные из MSIL на этапе установки.

Использование MSIL (c дополнительными по сравнению с классическим .NET метаданными) позволяет реализовать формальную верификацию программ с помощью очень простого верификатора, подобно тому как метаданные preverify используются крошечным верификатором мобильной Java.

Планируется отказаться от MSIL в пользу TAL (Typed Assembly Language) - по сути native-кода с метаданными, обеспечивающими верифицируемость. Это позволит существенно сократить набор неверифицируемого кода за счет возможности верификации основной части ядра небольшим загрузчиком. Я думаю, это шаг Microsoft к реализации идеи Trusted Computers - загрузчик будет устанавливаться в смарт-карту (хранилище данных, защищенное от взлома при физическом доступе) на материнской плате и обеспечивать невзламываемость остальных частей системы (например, DRM - системы защиты музыки и видео от копирования).

В целом архитектура получилась довольно простой и приятной. Рад, что Майкрософт куда-то движется и готовится к качественному скачку. Vista все отягощена наследием проекта "OS/2-NT" времен царя Гороха.