Показать сообщение отдельно
Старый 14.03.2008, 00:03     # 1453
medwed
Учаснег кросавчег
 
Аватар для medwed
 
Регистрация: 26.04.2006
Адрес: Родом из СССР
Сообщения: 436

medwed Популярный человек на этом форумеmedwed Популярный человек на этом форумеmedwed Популярный человек на этом форумеmedwed Популярный человек на этом форумеmedwed Популярный человек на этом форумеmedwed Популярный человек на этом форумеmedwed Популярный человек на этом форуме
Singularity — новая операционная система Microsoft

Об операционной системе Singularity еще мало кто слышал — что даже удивительно, поскольку производителем ее является Microsoft. Да и сам по себе проект является чрезвычайно интересным.

Singularity — это эксперимент по построению максимально надежной операционной системы. Этот эксперимент проводит подразделение Microsoft Research.


Основным источником информации о Singularity на русском языке сейчас является масштабный обзор на RSDN, поэтому перечислю здесь основные моменты, а за деталями предлагаю отправиться именно туда. Также вы можете увидеть операционную систему в действии (для публичного скачивания она недоступна), посмотрев ролик-интервью с одним из разработчиков на Google Video.

Итак, что же такое Singularity? Для ответа на этот вопрос надо знать, что такое CLR и Microsoft.NET. Предполагаю, что вам это уже известно, если же нет, то, вкратце, это исполняемая среда вроде Java, но позволяющая использовать множество языков программирования. Код с этих языков преобразуется в так называемый «промежуточный язык» — объектно-ориентированный ассемблер, который затем компилируется средой CLR в инструкции, понятные процессору.

Вот на таком языке и написана Singularity
Если быть точным — на языке Sing#, являющимся потомков языка C#.

Зачем это сделано? Дело в том, что этот язык, как и все, исполняемые средой CLR, является объектно-ориентированным и строго типизированным. Первая особенность позволяет использовать одну реализацию объектно-ориентированного подхода на всю систему, а строгая типизация вкупе с запретом на работу с указателями, делает фактически невозможным ошибки «переполнения буфера» и утечки памяти. Кроме того, такой механизм автоматически следит, с какими типами данных работает программист и не позволяет совершать непредсказуемые преобразования типов.

Однако это все доступно и в .NET-приложениях, которые можно запускать под Windows (а благодаря проекту Mono — и под Linux). Но создатели Singularity пошли дальше: типизированными и регламентированными явлются все системные функции. Например, подсистема межпроцессорного взаимодействия («каналы») требует заранее указать, какие данные, в каком порядке и с какими ограничениями можно передавать между процессами. Через такие каналы, кстати говоря, в Singularity приложения общаются не только друг с другом, но и с драйверами устройств.

Кроме того, все подсистемы работы с ресурсами (каналы, файлы, устройства) автоматически освобождает их во время завершения использовавшего их процесса.

Кстати говоря, в .NET-приложениях можно вызывать библиотеки с неуправляемые кодом и при желании работать напрямую с указателями — а в Singularity принципиально НЕЛЬЗЯ ни того, ни другого. Надежность данных и процессов в памяти — дороже.

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

Кстати, драйвера устройств и файловая система также исполняются как SIP-ы и процессы общаются с ними на обших основаниях.

Что интересно, даже с учетом всех этих многочисленных подсистем, абстрагирующих реальные ресурсы, инструкции и устройства, в тестах Singularity работает примерно на одной скорости с Windows и Linux. Многие операции выполняются даже быстрее (например, новый процесс создается в 2-18 раз быстрее). Кстати, по моим личным наблюдениям — сложные приложения .NET также выполняются очень шустро. Видимо, дело в оптимизированных (и единых для всех приложений) механизмах .NET и базовых бибилиотеках. Правда, в связи с тем, что приложений под Singularity написано мало, тесты являются во многом «синтетическими» — например, измерялся объем исполняемого кода программы «Hello World!». Подробнее о тестах смотрите в статье на RSDN. (Разработчики предполагают дальнейшую оптимизацию системы с еще большим выигрышем по скорости).

Singularity — это эксперимент, который направлен на изучение взаимодействия процессов, устройств и ресурсов в процессе работы операционной системы. Но, в то же время, это — возможное будущее операционных систем. Сейчас надежность, а не скорость и простота программирования является краеугольным камнем работы информационных систем. А с учетом того, что Singularity уже сейчас не проигрывает другим операционным системам в скорости — эта система вполне может стать единым стандартом операционных систем будущего.
__________________
Если хочешь иметь то, чего никогда не имел, то должен делать то, чего никогда не делал...
medwed вне форума