Перейти до змісту

Нова ОС від Microsoft


Єретик

Рекомендовані повідомлення

icon_plus_1.gifSingularity

В среде дотнетчиков модно что-то знать про Singularity. Хотя бы краем уха. Но как обычно, вокруг модного вьются дурацкие слухи, домыслы. Итак, что же это такое на самом деле?

Сначала несколько фактов.

* Singularity — это будущее Windows, когда уже не будет самого Windows
* В Singularity нет ни одной строки кода, взятой из Windows
* Весь код в Singularity выполняется в рамках одного "физического" процесса, к тому же в режиме ядра
* Singularity не является микроядерной ОС
* Singularity невозможно попробовать в России и Украине

А теперь по-порядку.

Будущее Windows, когда не будет самого Windows

Современная операционная система Windows основывается на разработках начала 90х, созданных командой под руководством Дэвида Катлера. Особенностями этой ОС являются:
монолитное ядро,
аппаратная защита памяти процессов,
повсеместно применяемый механизм разделяемых DLL,
механизм драйверов, абстрагирующий саму ОС от аппаратуры на многих уровнях,
оптимизация всей ОС для потребностей графической оконной подсистемы

Операционная система Singularity отличается от Windows разительно. Singularity разрабатывалась в Microsoft Research, как исследовательская разработка. Основная цель, которая ставилась при создании Singularity — надёжность ОС.

С начала и до конца Singularity написана на языке C#, вернее на его близком диалекте. Рудиментарные части, написанные на ассемблере и C займут, вероятно, чуть меньше 1 Мб. Это очень небольшой кусочек кода в ядре, C# используется во всех драйверах дисков, видео, ввода-вывода.

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

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

Модель памяти и процессы

В Singularity используется необычная модель памяти и процессов. Вся память плоская. Что это значит?

В далёкие времена DOS и Windows 3.x модель памяти была невообразимо бестолковой. Для экономии процессорных регистров, разрядов и всего остального память сегментировалась при помощи специальных сегментных регистров, к которым добавлялись адреса-смещения и т.д. и т.п.

С выходом Win32 (Windows NT и Windows 95 в данном случае одинаковы) — с выходом Win32 модель памяти стала плоской. Да, уже стала плоской с выходом Win32. Но в Win32 плоская модель памяти касается только одного процесса. Вернее, в каждом отдельном процессе мы имеем дело с обычной плоской адресацией, без всяких (бррр!) сегментов.

Зато если рассмотреть всю память в масштабе всей системы, она довольно причудливо распределена. Есть виртуальная память, физическая память, подкачиваемые страницы в своп-файле. Некоторые области физической памяти используются одновременно в нескольких процессах в качестве разных виртуальных областей.

Всё это в Windows управляется отдельной подсистемой я ядре, которая заведует целым каталогом описателей различных областей памяти, таблицами виртуальных адресов и т.д. и т.п.

Таким образом, с одной стороны да, в Win32 уже сделали память плоской. Но делали-делали, и не совсем сделали.

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

А как же безопасность?

Выделенные адресные пространства для каждого отдельного процесса в Windows — они создавались для изоляции. Если возникает сбой или намеренный казус в одном процессе, это никак не касается другого процесса.

Как же без этого обходится Singularity? А очень просто. Весь код ОС и процессов написан на safe-языке C#. Это означает, что полезть "куда не следует" вы просто не можете. У вас нет для этого матюков в языке. Поэтому и делать какие-то дополнительные границы виртуальных адресных пространств между процессами не нужно.

Это примерно как читать конфиденциальное письмо в комнате, полной слепых. Они всё равно не увидят, поэтому и прятать ничего не нужно.

Примерно ту же цель изоляции преследует разделение Windows на "режим ядра" и "пользовательский режим". Поскольку в Singularity изоляция гарантирована другими средствами, необходимость в жёсткой аппаратной изоляции отпадает. Весь код работает что называется "в режиме ядра", или как ещё говорят "в кольце защиты ноль".

Общение между процессами

Поскольку между процессами всё-таки нужно общаться, Singularity требует некоего средства — аналога Remoting или Web Services. Оно очень мало походит на Remoting, скорее это веб-сервисы без XML.

Обмен между процессами происходит при помощи специальных конструкций-расширений языка C#. В терминах этих конструкций очень жестко фиксируется "протокол" общения, то есть API вызовов между процессами.

Точно так же, как и в веб-сервисах, протоколы обмена в Singularity не позволяют передать между процессами ссылку на исполняемый код или на объекты с поведением. Передаются только данные жёстко фиксированного формата. Это позволяет гарантировать, что один процесс не сможет в другой процесс "запустить грязные руки". И соответствие вызовов протоколу гарантируется.

.NET Framework? Нет!

В отличие от распространённой сказки, на самом деле в Singularity нет никакого CLR. Singularity не может запускать IL-код.

Ещё раз для тех, кто сомневается в правильности букв: НЕ МОЖЕТ ЗАПУСКАТЬ IL-КОД.

Да, всё написано на C#. Но это не значит, что в Singularity есть JIT. Его нет. Код C# компилируется заранее и в момент загрузки системы все приложения уже скомпилированы в машинных кодах.

Это очень важный момент для понимания!

Для установки приложения, или драйвера в Singularity, код C# будет скомпилирован в конечный бинарный машинный код. И это должно произойти ДО загрузки.

Таким образом, здесь мы не имеем традиционной дотнетовской философии JIT, Assembly binding. Приложение компилируется целиком, со всеми библиотеками. При этом происходит полная оптимизация — компилятор знает о всех использованиях всех классов. Может выкидывать ненужный код даже из системных библиотек. Может делать виртуальные вызовы невиртуальными, если известно, что у класса больше нет наследников. Доступны очень "злые" инлайны...

Нет Reflection

Да, так как всё компилируется статически, механизма Reflection просто нет. Вернее, всё что от него осталось — рожки да ножки — compile-time Reflection. Во время компиляции/установки приложения в системе происходит анализ самого приложения и существующей системы на совместимость. Здесь используются некие механизмы Reflection.

Но, так как межпроцессные вызовы не используют передачу какого-либо кода или ссылок типа MarshalByRefObject, то Reflection по большому счёту и не нужен. Все задачи Reflection можно решить на этапе статической компиляции.

Как это пощупать?

Никак. Практически невозможно в России или в Украине получить доступ даже к существующему коду Windows. Как говорят в Microsoft, исходный код Windows даже для самих сотрудников — нечто вроде священной коровы, доступ к которому даётся только тем, кому он реально необходим.

По правительственным соглашениями, насколько мне известно, Microsoft предоставлял исходный код Windows специальным службам России для изучения.

В Америке и других странах Западной цивилизации исходный код Windows можно пощупать разным "друзьям" Microsoft вроде избранных MVP или некоторых университетов. Говорят, даже есть платная программа доступа для богатых компаний. Но у нас пока нет достаточной культуры уважения к интеллектуальной собственности, так что даже исходный код Windows могут увидеть единицы.

Что уж говорить о Singularity. Подержать в руках это очень перспективное изделие могут только очень большие шишки. Коммерческие секреты, всё понятно.

Где про это почитать

Singularity Home на Microsoft Research
http://research.microsoft.com/os/singularity/

An Overview Of the Singularity Project — самое полное на данный момент публичное описание
ftp://ftp.research.microsoft.com/pub/tr/TR-2005-135.pdf

Singularity Revisited — видео с демонстрацией работающей системы
http://channel9.msdn.com/ShowPost.aspx?PostID=141858




Тут виложені ісходнікі
Посилання на коментар
Поділитись на інші сайти

Хм, роздута мильна бульбашка (як Vista).

Але мені здаєтсья це аллергія на Microsoft.

Посилання на коментар
Поділитись на інші сайти

Хм, роздута мильна бульбашка (як Vista).

Але мені здаєтсья це аллергія на Microsoft.

Що саме? Не зрозумів.

Посилання на коментар
Поділитись на інші сайти

нова супер ОС для Супер крутих компів ?

З.І.

шось нагадало як Blizzard випускає Diablo III ... тоже вже з 90х проект....

Посилання на коментар
Поділитись на інші сайти

Що саме? Не зрозумів.

Ну ту ос ще майже ніхто не пробував, не тестував в робочих умовах, а ставлнення до неї вже відповідне, бо вона від MS.

Посилання на коментар
Поділитись на інші сайти

Сумніваюсь, що вона старе ПЗ потягне.

А коли треба писати все прикладне "з нуля" - чим вона краща від інших нових систем, наприклад Spring, Menuet чи Zeta ?

Знаючи Мєлкософт, можна з 99% долею імовірністю говорити що "старые пестни о главном" (о бабле) у вигляді закривання коду, нав'язування своїх, далеко не найкращих стандартів та інші пакості Білла будуть продовжуватися.

Так що я ставлю в найближчій перспективі на *nix-cи з вайнами впридачу, на перехідний період ;)

Посилання на коментар
Поділитись на інші сайти

Що саме? Не зрозумів.

Ну ту ос ще майже ніхто не пробував, не тестував в робочих умовах, а ставлнення до неї вже відповідне, бо вона від MS.

У мене ставлення до Майкрософта не упереджене. Мені дуже подобається їхній офісний пакет. Без нього не уявляю можливості полегшити собі роботу стандартними і доступними кожному інструментами (я про ексель і макроси). Хоча нову 2007 версію не сприймаю.

Також абсолютно не бачу реальної потреби у створенні нових ОС, які фактично, крім прожерливості і (в силу своєї молодості) глючності, жодних новшеств не добавляють.

Я дуже довго сидів на 2К вінді і не хотів переходити на ХР. Зараз так само не хочу переходити з ХР на Вісту. Звичайно, років через 5-10, коли нові програми перестануть підтримувати ХР, доведеться переходити на Вісту, яка до того часу зміцніє і обзаведеться 3-4 сервіспаками. Але реальної потреби в цьому я не бачу. Наскільки нова ОС стала захищенішою і надійнішою, я судити не можу. Але Сінгуляр зараз виходить з тими ж гаслами про революційну захищеність і надійність, які два роки тому використовувались для рекламування Вісти.

Посилання на коментар
Поділитись на інші сайти

Боюсь, что на Висту ты переходить не будешь ;)

Сразу перескочишь на "Семёрку", потому что через пять-десять лет не будет уже никакой Висты :)

А Офис-2007 мне нравится болше 2003-го, да и многие поработавшие с ним тоже довольны. Особенно довольны Экселем. Уточню, что в Экселе они делают не просто прайсы, а фактически ведут всю бухгалтерию (вместо 1С).

Посилання на коментар
Поділитись на інші сайти

Я теж чув тільки позитивні відгуки про Офіс-2007. Але поки що не було особливого бажання спробувати у ньому працювати. Мене відлякало тільки те, що його інтерсфейс повністю перероблений. Коли звик шукати потрібні інструменти в одному місці, а тепер вони знаходяться зовсім в іншому, то це вимагає деякий час для адаптації. Можливо з часом поставлю вдома. Бо в офісі користуюсь тільки тим, що вже інстальовано (офіс-2003), і права вибору немає.

Посилання на коментар
Поділитись на інші сайти

sergyj, щось я не розумію: ти дав посилання на коди Сінгуряріті, а в статті (яку ти виклав) написано, що коди цієї вінди для Росії та України отримати нереально і що вони взагалі дуже засекречені. Діє правило: що відомо більше ніж одній людині - відомо всім?

Посилання на коментар
Поділитись на інші сайти

  • 2 тижня потому...
sergyj, щось я не розумію: ти дав посилання на коди Сінгуряріті, а в статті (яку ти виклав) написано, що коди цієї вінди для Росії та України отримати нереально і що вони взагалі дуже засекречені. Діє правило: що відомо більше ніж одній людині - відомо всім?

Колись на курсах в Києву СБУшники скаржилися, що Майкрософт надавало для вивчення тільки якісь певні сегменти коду, а не всієї вінди повністю. Мабуть проблема в тому, що легко встановити джерело витоку інформації, хоча не забуваємо про СП :)

А взагалі не зовсім розумію «пінанія» Віндовса. Будь-який великий проект не обходиться без граблів. Ті хто працював в великих компаніях розуміють, що дуже часто «голова» має посереднє враження, про роботу «кінцівок».

Ситуація нагадує автомобілістів – нікого не радують асфальтні ями, але ніхто не їздить лісом, бо там нема асфальту і ям (тих хто придбав гелікоптер ми не беремо до уваги через незначну кількість).

Посилання на коментар
Поділитись на інші сайти

Заархівовано

Ця тема знаходиться в архіві та закрита для подальших відповідей.



×
×
  • Створити...