Экзотические ОСSingularity: лучше, чем Windows

Новая операционная система от Microsoft бесплатна, надежна, не подвержена вирусным угрозам и работает намного быстрее, чем Windows, Mac OS и Linux. Тем не менее многие пользователи не принимают ее во внимание. Tiberium объяснит почему.

Шесть лет назад корпорация Microsoft решила начать разработку новой операционной системы: этот проект получил название Singularity. При этом специалисты исследовательского подразделения Microsoft создали абсолютно новую ОС, основным достоинством которой стала надежность. Во время презентации Singularity на выставке разработок TechFest корпорация стремилась донести следующую мысль: Singularity — это не очередная версия Windows, а источник идей и технических нововведений для нее. По всей видимости, данное заявление было сделано для того, чтобы умерить желание многих пользователей получить новую ОС. Ведь всего того, на что способна Singularity благодаря своей архитектуре, в Windows нет. Нет этого даже в Windows 7. Если вы захотите самостоятельно убедиться в этом, можно бесплатно скачать систему с сайта www.codeplex.com/singularity.

Практически любая существующая сегодня операционная система, установленная в персональных компьютерах, будь то Windows, Mac OS или Linux, имеет в своей основе «древнюю» архитектуру. Все используемые концепции относятся к тому времени, когда еще не было ни Интернета, ни вирусов, а компьютер по величине походил на современный серверный шкаф.

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

Известным примером, иллюстрирующим данную ситуацию, является переполнение буфера, при котором программа записывает данные в области памяти других, «соседних» приложений — типичный способ действия вредоносного ПО, которое стремится заполучить на компьютере права администратора. И даже если вся ответственность за брешь в системе безопасности ложится на небрежно написанное приложение, в первую очередь несовершенство ОС делает такую программу по-настоящему опасной.

Код: безопасные языки программирования

В Singularity разрешен только безопасный программный код, написанный на языках, обеспечивающих собственную среду выполнения (Runtime Enviroment). На уровне приложений она работает как виртуальная машина. Известными языками программирования, поддерживающими Runtime, являются прежде всего Java и все .Net-языки — к примеру, C#. Код Singularity также написан практически полностью на C# (читается как «Си-шарп»), точнее специально разработанном для нее языке Sing#. В отличие от C и C++, компилятор не переводит программный код сразу на машинный язык. Вместо этого среда выполнения преобразует его вначале в байт-код. Благодаря данному промежуточному этапу система может проверить правильность кода и избежать «вторжения» в другие области памяти. Это, конечно, отнимает некоторые системные ресурсы, но Singularity позволяет компенсировать потери — каким образом, вы узнаете из раздела «Производительность».


Защита: изоляция всех Процессов

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

Среда выполнения каждого SIP также работает независимо от системы и может быть изменена в соответствии с требованиями приложения. В Windows или Linux, как правило, имеется одна среда выполнения для всех приложений. К примеру, ответственность за все запущенные Java-приложения ложится на Java Runtime Environment (JRE) — исполнительную среду для написанных на языке Java приложений. Сбой одного потянет за собой всю JRE, и работа всех приложений Java будет прервана.

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

Каналы: эффективная Коммуникация

По причине того, что программно-изолированные процессы в большинстве случаев работают самостоятельно, обмен данными с ядром посредством двоичного интерфейса приложений (ABI) ограничивается несколькими командами. Для сравнения: ABI в Singularity обходится 163 функциями, а для программного интерфейса приложений в Windows (API) предусмотрено около 14 000 функций.

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


Файл, загруженный через браузер из Интернета, будет помещен в «обменную область». Для его сохранения на диск браузер открывает канал подключения к драйверу файловой системы. Она также посредством канала устанавливает связь с драйвером жесткого диска. Одновременно с открытием канала SIP передает права владения файлом.

В существующих ОС системы каналов нет, так что Singularity в ближайшем будущем едва ли сможет прийти на смену Windows. Для этого пришлось бы переписать все существующие приложения. Такие известные программы, как Photoshop и Nero, в Singularity работать не будут, так как они написаны на небезопасных языках C или C++. Но даже Java- или.Net-приложения, которые полностью совместимы со средой Singularity, пришлось бы дополнить возможностью работы с каналами.

Стабильность: синий экран смерти уходит в прошлое

Драйверы — самые небезопасные компоненты ядра. 85% всех сбоев Windows объясняется дефектными
драйверами. А в Linux-системах вероятность появления ошибки в драйверах в сравнении с остальным кодом ядра выше в семь раз.

Проблемы с драйверами возникают по большей части вследствие того, что система не может контролировать все то, чем они «занимаются», какие ресурсы используют и с какими другими системными компонентами могут провоцировать конфликты. Вместе с этим многие драйверы работают с наивысшими системными правами. Если они вызывают сбой, то, как правило, «тянут» за собой всю систему.

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

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

Вот в чем заключается преимущество микроядра, которое освобождает как можно больше системных ресурсов, чтобы потом задействовать их при необходимости. Идея микроядра сама по себе не нова, она встречается уже в обучающей системе Minix образца 1987 года. Но ее реализация до настоящего времени была связана со множеством проблем, главная из которых — слишком медленная работа.

Самая быстрая система

Эталонные тесты иллюстрируют, сколько тактовых циклов требуется операционной системе для выполнения определенной задачи. Чем меньше значение, тем лучше.
  • +4
  • Tiberium
  • 06 января 2010, 16:36

Комментарии (25)

Исправьте ссылку
www.codeplex.com/singularity.
точка здесь лишняя
Вот тут
есть не плохой более подробный обзор, для заинтересовавшихся.
  • avatar
  • v0id
  • 06 января 2010, 17:05
  • #
  • 0
Свежо предание, да вериться с трудом.
а вы попробуйте :) и нам расскажите:) я вот качаю для того чтобы поиграться)
сессия таки, но блин, придется поиграться
Кста на Virtualbox'e без РАЕ не стартует.
Зараза, на виртуалку не хочет, Virtual PC пока качать не буду, а на болванку — не охота ребутаться, может вечером :(
дак в чем проблема его включить?
  • avatar
  • v0id
  • 06 января 2010, 17:10
  • #
  • 0
Я так понимаю это преемник вообще всей ветви Windows или независимая ветвь будет?
Если вимательно читать, то Singularity не новая версия Windows, а источник новых идей и решений
Не, это понятно, просто интересно будут ли они и дальше эти идеи интегрировать в windows или перейдут к вообще новой архитектуре?
ну майкрософт ничего не делает просто так, я думаю это будет тестовая площадка для основной ветки винды, там это будет отрабатываться, а что понравится будет переноситься. Сделано по примеру RH — Fedora, Solaris — Open Solaris etc.
Это лично мое мнение:)
  • avatar
  • LRN
  • 06 января 2010, 17:21
  • #
  • 3
ну вообще Tiberium пока что только копипастами и занимался, только раньше хотя бы источник указывал :(
А я наивно поверил что это первая самостоятельная статья.
License: Non-Commercial Academic Use Only

А я уже испугался, мол, конец мира наступил. Ан нет…
Основная часть традиционных операционных систем, прежде всего ядро, написана на языке программирования С. Современные разработчики этого бы делать не стали, так как команды на языке С и его преемнике C++ оказывают прямое влияние на регистры процессорного ядра и оперативную память.

Я было подумал, что это шутка какая-то.
  • avatar
  • SPU
  • 06 января 2010, 20:21
  • #
  • 0
Местами полный бред написан, особенно про драйверы. А графики приведены скорее всего не для процессорных тактов, а для абстрактного процессора, т.е. для реальных операционок реальные, а для singularity — виртуальные (т.е. кол-во команд виртуальной машины), а вот во что эти виртуальные такты превращаются на реальном процессоре лучше даже не думать.
А меня позабавили 85% и «выше в семь раз», то есть 87,5%. Это как «новый корм для собак стал а 23% вкуснее».
По мне статья слишком бредоваяпопулистическая. И источник, пожалуйста, не забывайте указывать!

А, да, я был на такой презентации-докладе Microsoft Research «для узкого круга лиц» :) более полугода назад, на самом деле это очень интересная организация. Она в некоторой степени независима от головной корпорации, и исследователи (а в ней работают именно исследователи, отчитывающиеся научными трудами, а не продажами программ) занимаются различными интересными вещами. Конечно, вектор развития задаётся профилем деятельности Microsoft Corp., но делают они, как показали, действительно необычные вещи, которые вовсе не обязательно должны стать продаваемым продуктом.

Конечно же, после доклада я дал проводившему семинар зам. директора (? непомню точно, надо посмотреть) Microsoft Research свою визитку Фонда ReactOS, сказал что у них деятельность на самом деле в некотором роде похожа на опенсорс разработку: не такой жесткий контроль, отсутствие «манагеров», и т.п.
Пока взаимодествие с переферией (в широком смысле, т.е. все, что вне процессора) лежит на софте, все их потуги не имеют большого смысла. Да, часть проблем можно устранить через виртуализацию и запихивание драйверов в песочницы, но запретить возможность запрограммировать железо так, что система станет неработоспособна, они никак не смогут.
Именно поэтому их деятельность представляет лишь научный интерес. Хотя, ИМХО, в информатике и программировании не может быть никакой науки, это либо чистая математика, либо прикладная.
Я так понимаю, весь юмор в том, что производительность ОС — это не такты, необходимые на переключение thread'ов, а средняя производительность приложений, которая, очевидно, будет страдать.
Скачал образ, прожег — не загружается. Пишет Booting from CD device 0xEF и на этом все
Скачаю только для того, чтоб посмотреть как ония микроядро на шарпе пишут))
А меня вот это повеселило:
Практически любая существующая сегодня операционная система, установленная в персональных компьютерах, будь то Windows, Mac OS или Linux, имеет в своей основе «древнюю» архитектуру. Все используемые концепции относятся к тому времени, когда еще не было ни Интернета, ни вирусов, а компьютер по величине походил на современный серверный шкаф.
Т.е. аффтар абсолютно уверен что Linux писался когда не было Интернета для того чтобы крутиться в «серверном шкафу»? Похоже что статья написана каким то очередным оголтелым вендузятником. Кстати совершенно не понятно кто аффтар статьи на оригинальном сайте. Может просто я плохо искал…
аффтар абсолютно уверен что Linux писался когда не было Интернета
Нет, автор пишет про архитектуру, в не про сами ОСи. Серьезные научные исследования в данной области действительно давно уже заброшены. А зачем вкладывать ресурсы в развитие архитектуры, когда Windows и так покупают? Когда вышли на рынок последние версии MS DOS, Windows 3.1 и 95 — все они на десятки лет архитектурно отставали от имеющихся тогда работающих прототипов.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.