Просмотров: 8047

PhantomOS: держим курс на ортогональную персистентность. Часть 2


В прошлой части мы подробно обсудили основные свойства российской инновационной операционная системы «Фантом», частным образом разрабатываемой в компании Digital Zone. В том, что намерения её создателя — Дмитрия Завалишина — серьёзны, говорит хотя бы то, что проект получил свидетельство о государственной регистрации в РФ программ для ЭВМ за № 2009611733, что позволяет защитить авторские и прочие права в случае его гипотетического будущего успеха.

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

dz fantom Phantom OS ос фантом завалишин afynjv

Следствия и ответы на вопросы

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

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

В ОС Фантом не надо специально создавать никаких образов отдельных программ, хотя бы просто потому, что это имманентное свойство системы. Мгновенное отключение электричества — и на диске просто остаётся последнее согласованное состояние системы до скачка напряжение, а как только появится электричество, система почти мгновенно загрузится (не нужна долгая фаза инициализации всего и вся) и снова продолжит свою работу с места своего останова — для этого не требуется никаких дополнительных процедур и усилий.

Просто не удержусь, чтобы не процитировать очень доступное объяснение этого основного свойства своей ОС в описании самого Дмитрий Завалишина:

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

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

Физически же такой эффект «постоянной памяти» достигается чередованиями из серий инкрементальных снэпшотов, которые непрерывно формируются самой ОС, тщательно фиксируя все аспекты состояния своей работы, а также полными срезами, которые будут формироваться гораздо реже (эта стратегия полностью аналогична мелкозернистой и крупнозернистой истории при журналировании работы в DragonFlyBSD и её файловой системы HAMMER).

Саму скорость журналирования работы можно регулировать и даже настраивать под себя, указывая какие-то приоритеты в сохранении результатов текущей жизнедеятельности системы. Одна из важных особенностей ОС Фантом, по словам создателей, как раз и заключается в найденном ими способе (собственный howto) «дёшево» создавать мгновенные снимки состояния системы, при этом не останавливая и не внося серьёзных возмущений в работу самой системы.

dz ПГШ GUI fantom Phantom OS ос фантом завалишин afynjv

Во-вторых, это подводит нас к некоторым, если так можно выразиться, философским аспектам-следствиям из работы системы.

Например, полностью стирается разница между запущенной и незапущенной программой. Следующий приятный аспект — это встроенная возможность нативных программ откатывать свои состояния — выполнять настоящий во всех смыслах «системный Undo», вне зависимости от объектов, которыми каждая конкретная программа оперирует.

Для прикладных программистов тоже есть приятные новости. Завалишин обещает радикальное сокращение времени разработки стандартных программ — под «Фантомом» он прогнозирует ускорение от консервативно-минимальных 30% до даже немного фантастических 400% (в сравнении со временем разработки аналогичного функционала для «обычных» ОС).

По большому счёту, это достигается за счёт избавления от необходимости сохранять массу промежуточных данных в файлах и заново считывать их оттуда (это следует из того же «бессмертия» программ), а также за счет радикального упрощения взаимодействия программ и их составных объектов в рамках новой IPC-модели Фантома (здесь расчёт на новый, ранее невиданный уровень модульности и code reuse).

С другой стороны, лично мне не понятно, как же всё-таки избежать работы с обычными пользовательскими документами/файлами — ведь как-то нужно же ими уметь обмениваться с другими, хотя бы теми же Windows-компьютерами?

dz fantom Phantom OS ос фантом завалишин afynjv

Подведём черту и сформулируем краткий вывод, итак: Фантом ОС — это Full Managed OS, где реализовано единое адресное пространство, возможны только managed-языки для разработки и т.д. Фактически ОС == большая виртуальная машина. Кроме того здесь реализовано фоновое персистентное сохранение состояний объектов и наблюдается полное отсутствие файлов.

Состояние разработки на текущий момент

Часто при обсуждении этого проекта на Западе его относят к категории Vaporware. Что ж, какие-то основания для этого, безусловно, есть. Система разрабатывается уже почти 10 лет, при этом конца и края этому не видно, ибо любая новая ОС — это объективно, согласитесь, разработка явно не самая простая и быстрая. И поскольку делается всё это исключительно за счет собственных ограниченных ресурсов компании, к тому же без массированного применения чужих наработок, то, конечно, подобные проекты неизбежно превращаются в долгострой.

Впрочем, есть и хорошие новости. Прототип этой системы уже реально существует, в том числе и в коде, — в этом нет никаких сомнений. На различных выставках демонстрируется её альфа-версия, в которой пока, правда, не реализованы все запланированные возможности.

Сейчас эта система работает как в эмуляторе, так и на реальной аппаратуре (x86, 32-разрядная адресация), запускает простые тестовые прикладные программы, выполняет мгновенные снимки (snapshot) состояния и рестарт с последнего доступного снимка при внезапной перезагрузке (это, напомню, её ключевые особенности). Также приятно, что она уже содержит базовые драйверы графической подсистемы и минимальную реализацию OpenGL, также полностью поддерживает сетевые протоколы TCP/IP...

И, наконец, уже выложены в свободный доступ исходники пользовательской части системы, которую принято называть «userland». Разработчики клятвенно обещают на этом не останавливаться и продолжать делиться кодом по мере его готовности.

dz fantom Phantom OS ос фантом завалишин afynjv

В заключение пункта также хочется кратко процитировать одного из основателей проекта Кирилла Готовцева, который оценивает текущее состояние проекта и его планы на будущее так:

Есть проект, и он делается — медленно, но верно. На сегодня значительная часть гипотез подтверждена работающими стендами, соответственно проект можно начинать разрабатывать более активно. Поскольку через год-полтора нам бы хотелось видеть в мире некоторое кол-во человек, которые будут готовы брать на себя какие-то проекты в рамках основного workflow, то мы начинаем уже сейчас рассказывать о концепции, чтобы в продуктивной дискуссии налаживать контакты с теми, кто способен адекватно воспринимать и участвовать в проекте.

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

Фантомас разбушевался: недостатки системы

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

  1. Чрезвычайно сложная реализация garbage collector. Тут фишка вот в чём: если размеры объектно-адресной среды системы имеют порядок, прямо соответствующий размеру вашего жесткого диска, то есть на сегодня, это, скажем, 1 Тбайт, то очевидно, что в недалеком будущем надо уже говорить о масштабе в 100 Тбайт или 1 Пбайт. Сборка мусора на объеме в 1 Тбайт, при условии, что реально 95% оперативных данных лежат на диске, — это ЧРЕЗВЫЧАЙНО затратная работа, и этот процесс может растянуться на сутки. При этом сборщик может оказать огромное давление на подсистему виртуальной памяти и повлиять на работу обычных программ, а обеспечение параллельной с работой программ сборки мусора создаст ощутимую нагрузку на систему.

  2. Поэтому в Фантоме было принято вынужденное решение: разбить сборку мусора на две части. Это, во-первых, быстрый негарантированный алгоритм (refcount, собирает мусор сразу, но не в состоянии победить циклы) и, во-вторых, длинный полноценный алгоритм, не затрагивающий актуальную копию системы, а работающий на снимке ее состояния. Лично у меня даже есть соответствующее подходящее название для этой схемы — Lame garbage collector (LGC).

  3. Драйверы — всё для всего придётся создавать практически с нуля. У Linux с её гигантскими человеческими ресурсами этот путь занял примерно 10-15 лет. Здесь, учитывая виртуально-машинную специфику самой ОС и гораздо меньшие человеческие ресурсы... короче, это пока больной вопрос.

  4. Потенциальная медлительность такой системы. Заторможенность будет проявляться по двум разным причинам. Во-первых, это байт-код — дополнительный уровень абстракции, да ещё реализованный на системном уровне, будет высасывать из железа заметные ресурсы. Во-вторых — это постоянная синхро-проекция виртуальной памяти на винт, что уже по целому ряду причин должно сурово тормозить систему. Добавьте сюда ещё якорящий на полном ходу всё и вся фирменный Lame garbage collector...

  5. Впрочем, во втором случае можно уповать на SSD, SATA III, Thunderbolt и другие эффектные слова. В остальных же случаях процессоры нового поколения рано или поздно дадут ту избыточную мощность, которая с лихвой компенсирует возникающие потери латентности, ну а пока...

  6. Несовместимость с существующими программами, использование своего собственного экзотичного байт-кода. Отчасти конвертеры с Java и .Net теоретически спасут положение, но опять же — сильная идеологическая разница между системами будет приводить к неработоспособности большинства обычных программ, экспортированных извне, для начала хватит уже одного принципиального отсутствия файлов.

  7. Фантомасовцы декларируют отсутствие поддержки C/C++ (и вообще любых программных конструкций с указателями), что в дополнение к пункту 4 — лишний гвоздь в гроб ещё не народившейся системы. Завалишин довольно категорично считает, что C/C++ уже почили в бозе, тогда как миром сейчас реально рулит связка Java/.Net, — ой ли, лично я так не считаю.

  8. Экзотичность. На самом деле попытка поставить всё на голову в методике работы с обычными программами ещё долго будет являться явно отпугивающим фактором для этой ОС, доведись ей таки однажды в муках выродиться из чрева Digital Zone. Всё-таки инерция привычного — это та вещь, которую ни в коем случае не стоит недооценивать при выходе на массовый или коммерческий рынок.

Насколько Фантом уникален?

Ещё одна ложка в бочку меда, которой я завершаю этот большой обзор.

Конечно, можно совсем немного ненапряжно покопать, чтобы убедиться, что ничего «полностью уникального» в этой системе нет. Разработчики справедливо утверждают, что Фантом не является очередным клоном Windows/Unix, но при этом замалчивают, что он является архитектурным клоном любой системы, базирующейся на уже давно известной концепции ортогональной персистентности (концепция отчасти звучит для меня как векторный фидонет, не правда ли?). Как минимум с начала 80-х была заложена архитектура KeyKOS/EROS, затем были Blender RNA, где граф объектов со всем состоянием программы сохраняется на диск, хронологически позже была написана уж совсем современная ОС Active Oberon А2 (BlueBottle).

Были и другие подобные проекты, например, Grasshopper OS, и я уже не говорю про знаменитые MS Singularity или JNode. Мы также скромно промолчим про множество надстроек над обычными ОС, реализующих фактически тоже самое, но менее глобально-ресурсоемким способом. Как лишь единственный пример, это CRIU (application Checkpoint/Restore In Userspace), который позволяет в Linux сохранять состояние программы в виде контрольной точки, и впоследствии возобновить работу данного приложения с этой же точки (состояния). Это может использоваться в самых разных целях — и это то, что работает уже прямо сегодня, применяясь преимущественно в области создания виртуальных контейнеров в различных системах виртуализации.

dz fantom Phantom OS ос фантом завалишин afynjv

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

Заключение

В этой статье из двух частей — вероятно, самой подробной на тему ОС Фантом на русском языке из всего опубликованного — я довольно последовательно и подробно рассмотрел концепты устройства этой диковинно-инновационной российской операционной системы. Я старался не транслировать какую-то одну позицию и намеренно привел как плюсы, так и минусы этого проекта.

Кроме того, информация подавалась в более популярном формате, но те, кто желает усилить степень погружения в технические детали, могут обратиться к первоисточникам, которых, кстати, существует не так уж и много: ответы от самого Завалишина на большое количество общих и частых вопросов (FAQ) находятся здесь, более подробное техническое изложение доступно тут. Ну и высший уровень технических деталей — это уже англоязычные источники Phantom Whitepaper и довольно информативная wiki-страница проекта.

dz Дмитрий Завалишин Dmitry Zavalishin fantom Phantom OS ос фантом завалишин afynjv

Что же касается параллельной темы статьи — о программистах-мечтателях-инноваторах... Позвольте в заключение привести короткую цитату с ответом самого Завалишина о Мечте и своём видении будущего своего главного проекта жизни:

Хрусталь мечты должен непременно вести человека вперед, туда, куда, может быть, и нельзя дойти, но надо обязательно стремиться. Это — романтическая часть ответа. Впрочем, мы — реалисты. Мы понимаем, что пока физически в состоянии сделать систему с нуля только для ограниченных применений, и уже очертили для себя направления, в которых будем работать на первых порах, — встроенные системы и веб-серверы.

Развитие в других направлениях — вопрос возможного партнерства или инвестиций. Мы видим свою задачу в том, чтобы показать ценность новой технологии и сделать эту технологию практически применимой хотя бы в узком целевом сегменте.

~

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

dev.by, 2012

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , , , , , , , , , ,
Эта запись опубликована: Воскресенье, 16 сентября 2012 в рубрике МненияОбзоры.

5 комментариев

Следите за комментариями по RSS
  1. Свидетельство о государственной регистрации в РФ программ для ЭВМ не даёт ровным счётом ничего. Просто свидетельство, что такая программа была.

    Эти патенты не имеют юридической ценности.

  2. На самом деле, к Завалишину, при всем уважении к нему, и к его работе,

    есть два серьозных вопроса, остающиеся без ответа:

    первый -- теоритический,

    на тему "теперь не нужно ничего разворачивать из файлов",

    есть отличный контрпример (который он тупо отказался (вос)принимать и комментировать) -- графические и видео файлы,

    если полностью следовать заявленной концепции, то такую информацию следует держать раскодированой\несжатой, что... понятное дело -- абсурдно,

    если же вводить здесь "пусть это будет исключением из правил",

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

    второй -- практический,

    это реализация внятного системного фреймворка,

    как для системного уровня, а самое главное для программирования пользовательского интерфейса

    (понятное дело, что ни "а мы сделаем поддержку существующих", ни "а мы сделаем это потом", как нормальные ответы здесь не годятся... потому что это главное предусловие для реализации заявленного "ускорение от консервативно-минимальных 30% до даже немного фантастических 400%")

  3. не надо отнимать у пользователя горячо им любимые и собираемые "файлики", ну как без них?

    система интересна только в качестве плацдарма для изучения "чего-либо", и в последствии рождения чего-то интересного для применения в Linux & Window & Mac & other

  4. У Димы концепция взята из IBM AS/400 только там нет персистентности и большая часть фишек реализуется на уровне железа, а так -- "всё есть объект", "постоянные объекты"(объекты состояние которых сохраняется на диске между перезагрузками), "одноуровневая память" (нет различия между дисковой и оперативной памтью -- для системы вся память оперативная) именно оттуда. Ну и жаль конечно, что используется собственное микроядро, а не L4, как у нас в osFree %)

  5. В общем, очередная пустышка.

    Не умеют в России делать ни машины, ни электронику, ни софт. Готовой нефтью торговать и газом - это да.

    Пора бы уже данный факт признать и успокоиться.

    Идея благополучно подохнет, как подохли никому не нужные йота-говно-фоны и прочие русские деревянные велосипеды.

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз