октября 09, 2009

Архитектура и предпосылки создания ОС «Фантом»

Архитектура и предпосылки создания ОС «Фантом»

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

Если Вы интересуетесь техническими деталями системы и/или чувствуете себя в силах сказать своё слово в разработке этой ОС на добровольных началах, свяжитесь с нами (Дмитрий Завалишин, dz@dz.ru, слово phantom в subject'е). Система распространяется по лицензии LGPL.


Общие вопросы

  • Что такое ОС Фантом? Это очередной клон Windows или ещё раз переупакованный в новую коробку Linux?
  • В чем же интерес или польза от несовместимой ни с чем системы?
  • Вы собираетесь конкурировать с Windows? Это несерьёзно и нереально!
  • Но MacOS-то обошлась в огромные деньги?
  • Хорошо, но как именно можно конкурировать с Windows?
  • Насколько дешевле будет производить программы на основе ОС Фантом?
  • 400 %? Это нереально!
  • В чём суть этого прироста? Эти языки отличаются очень несущественно! Не может быть!
  • Но ведь для новой системы потребуются новые программы — сколь огромные силы будут нужны для их создания?
  • Это всё — мелкие программки, не так ли?
  • Фантом похож на Microsoft Singularity.
  • Ну и, тем не менее — получается, что вы не так уж революционны?
  • Каково же уникальное свойство ОС Фантом?
  • Но компьютер нужно иногда выключать. Значит, система будет остановлена. А значит — будут остановлены и все программы, нет?
  • Такое уже есть в Windows, называется Hibernate.
  • Это должно требовать огромных ресурсов? Ведь система вынуждена постоянно «фотографировать» себя?
  • А нужно ли это? Может, по старинке?
  • На какие рынки вы полагаете ориентировать Фантом?
  • Что такого важного в Фантоме для медицины и войны?
  • Ну — хорошо, всё понятно с войной и медиками, но где польза от Фантома на серверах?
  • Я видел упоминание Фантома в связи с Amazon Cloud services. В чём идея?
  • В каком состоянии находится проект сейчас?
  • Это похоже на...?
  • Почему вы против развития этой ОС в режиме «открытого кода», каковы основные аргументы?

Бизнес-вопросы

  • И что — вы собираетесь на этом зарабатывать деньги?
  • Как?
  • Каков ожидаемый объём вложений?
  • А что можно заработать?
  • Ну а реально?
  • Ха-ха-ха. На рынке есть iPhone и Android, кому вы там нужны?

Технические вопросы

  • Мне сказали, что Фантом будет работать очень медленно, так как основан на интерпретируемом коде.
  • Реализован ли уже JIT в ОС Фантом?
  • Как будет решаться проблема драйверов?
  • Возможна ли поддержка механизма виртуализации (например: qemu + win23/linux), и как вы видите будущее этой технологии в фантоме?
  • Говорят, в Фантоме нет файлов — это правда? Как же без файлов?
  • А как же пользователь? Куда он положит свой вордовский документ?
  • Что делать, если у меня испортилась часть диска? В обычной системе я потеряю часть файлов, а у вас — сразу всё. Верно?
  • Если программа плохо написана и «жрет» память, раньше можно было ее убить и запустить заново, а теперь?
  • А не является ли операционная система EROS тем самым, о чём вы тут рассказываете?

Общие вопросы


Q: Что такое ОС Фантом? Это клон Windows или ещё раз переупакованный в новую коробку Linux?

A: Ни в коем случае. Наша задача — не дополнить существующие ОС, которые и без того изрядно тяжеловесны и перегружены, а построить новую платформу.

Q: В чем же интерес или польза от несовместимой ни с чем системы?

A: Вовсе не обязательно быть несовместимым, имея технологическое преимущество. Мы реализовали POSIX-подсистему в рамках Фантом. Конечно, не все возможности ОС Фантом доступны из POSIX-подсистемы, но мы работаем над этим.

Q: Вы собираетесь конкурировать с Windows? Это несерьёзно и нереально!

A: Существует несколько примеров более-менее удачной конкуренции с Windows. Наиболее известные ОС широкого профиля — MacOS и Linux. Менее известные и нишевые — PalmOS и Symbian. Отметим, что все эти системы (за исключением, пожалуй, MacOS) были созданы при достаточно умеренных вложениях.

Q: Но MacOS-то обошлась в огромные деньги?

A: Отчасти. Если смотреть на весь путь её развития — то да. Но, фактически, десятая версия MacOS (та, которая используется сейчас) написана заново в течение довольно короткого времени. Эта система, как и Linux, эффективно использовала потенциал Open Source сообщества и обошлась в довольно обозримые деньги. Во всяком случае, не самая крупная на свете компания Apple в не самые лучшие свои годы смогла эти деньги проинвестировать.

Q: Хорошо, но как именно можно конкурировать с Windows?

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

Q: Насколько дешевле будет производить программы на основе ОС Фантом?

A: Мы предполагаем, как минимум, 30% прирост производительности труда разработчика. Это — консервативная оценка. Суммарный эффект может дать 200—400% прирост.

Q: 400 %? Это нереально!

A: Вполне реально. Прирост производительности разработчиков от простого перехода в разработке ПО с языка программирования C++ на языки Java и C# оценивается экспертами в 500% — чем, собственно, и объясняется вытеснение первого языка двумя последними в течение достаточно короткого срока.

Q: В чём суть этого прироста? Эти языки отличаются очень несущественно! Не может быть!

A: Мы с удовольствием обсудим этот вопрос в кулуарах — он не пятиминутный. Вкратце — Java и C# обладают двумя важными свойствами: а) они лишают программиста возможности сделать некоторые чрезвычайно болезненные ошибки, исправление которых часто требовало неадекватного и непредсказуемого времени, и б) они сильно облегчают возможность сборки программы из крупных готовых частей. ОС Фантом в существенной мере развивает этот успех.

Q: Но ведь для новой системы потребуются новые программы — сколь огромные силы будут нужны для их создания?

A: Существенное количество программ не потребуется создавать заново — лишь перенести из старых систем. Кроме того, позвольте обратить ваше внимание на такое явление, как iPhone. Он создан на основе весьма специфичной системы (модифицированный MacOS), все программы для которой были созданы с нуля — даже простой перенос программы из другой ОС невозможен ввиду очень необычного подхода к построению интерфейса пользователя. Всего лишь за полтора года существования iPhone было разработано более 225 000 программ для iPhone.

Q: Это всё — мелкие программки, не так ли?

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

Q: Фантом похож на Microsoft Singularity.

A: Первая информация о Фантоме была выложена в Сеть в 1998-м году. Описание концепции Фантом было отправлено в Microsoft за пару лет до объявления Singularity. Извините уж, но, скорее, это Microsoft Singularity похожа на Фантом.

Q: Ну и, тем не менее — получается, что вы не так уж революционны?

A: Было бы глупо надеяться, что мы совсем уж уникальны. Есть ещё два-три человека в мире, способных двигаться не уступая нам. Но — похожесть Фантома и Microsoft Singularity не означает их идентичности. У нас есть уникальное свойство, которое Microsoft пока не осознал, как существенную ценность, или не умеет реализовать.

Q: Каково же уникальное свойство ОС Фантом?

A: Говоря попросту — бессмертие. В отличие от всех существующих систем Фантом умеет обеспечить работающим в нём программам вечную жизнь. Для программ не существует необходимости завершаться. Это довольно сильно меняет ситуацию. Во-первых, это удобно — пользователь не должен перед выключением машины закрывать все программы и снова открывать их перед началом работы. Во-вторых, это позволяет программам быть сильно проще — например, программа больше не вынуждена вообще уметь записывать своё состояние в файл! Одно лишь это упрощение снижает затраты денег и времен на те самые 30%. А есть и другие.

Q: Но компьютер нужно иногда выключать. Значит, система будет остановлена. А значит — будут остановлены и все программы, нет?

A: Скажем иначе — «приостановлены». Для программ остановка системы выглядит как задержка в работе. Примерно как нажатие кнопки «пауза» на DVD. После запуска системы все программы просто «поедут дальше».

Q: Такое уже есть в Windows, называется Hibernate.

A: Не всё так просто. Hibernate требует от вас специального завершения работы системы — если его не выполнить, то всё пропало. То есть — Windows не может гарантировать программам «вечную жизнь», а значит — программы под Windows приходится писать по-старому. Фантом же способен пережить даже ситуацию, когда компьютер обесточен совершенно внезапно. После перезапуска системы она всё равно восстановится в том виде, который имела за несколько секунд до спонтанного выключения.

Q: Это должно требовать огромных ресурсов? Ведь система вынуждена постоянно «фотографировать» себя?

A: Основное know how Фантома состоит именно в умении дёшево создавать мгновенные снимки состояния системы, не останавливая её и не внося серьёзных возмущений в работу. Тонкость в том, что «фотографирование» должно запечатлеть всю систему на один момент времени — без исключений. До сих пор считалось, что это требует паузы в работе всех программ. Мы нашли способ распределить во времени создание такой «фотографии», при этом оставив её синхронной с точки зрения «внутренностей» системы.

Q: А нужно ли это? Может, по старинке?

A: Нужно. Это даёт несколько весьма существенных преимуществ. Важнейшее из них — это весьма существенное удешевление разработки ПО. Если оно ещё не впечатлило Вас, я попробую привести весьма простой пример. Представьте себе, что вы научились делать автомобили на 30% дешевле, чем это умеет делать Toyota или Audi. А ведь рынок ПО недалёк по масштабу от рынка автомобилей: только коробочного ПО в России в 2007 продано на 2,7 млрд долл. Это без учёта услуг и разработки заказного ПО.

Q: На какие рынки вы полагаете ориентировать Фантом?

A: Это — система широкого профиля. Технически она пригодна для всех известных применений — десктоп, мобильные устройства, серверные приложения, специальные (встроенные) системы. Но есть направления, где Фантом может проявить себя весьма ярко. Например, медицина и военная техника. В качестве стартового поля для Фантома мы рассматриваем встроенные применения, из которых самые важные, как нам кажется — это ОС для автомобиля и... телевизора. Эти области давно и успешно обслуживаются Linux-ом (то есть, существует достаточное количество переносимого софта) и сильно выигрывают от другого важного свойства ОС Фантом — способности мгновенно стартовать в полностью рабочем состоянии.

Q: Что такого важного в Фантоме для медицины и войны?

A: Фантом, в силу своей концептуальной простоты, не только не теряет состояние программы при внезапном выключении компьютера, но и чрезвычайно быстро восстанавливается при запуске. При условии тщательной реализации система может восстановиться буквально за единицы секунд, а при условии компактности прикладной программы — и быстрее. Давайте представим себе стоящий у постели реанимационного больного компьютер, который управляет системами жизнеобеспечения. Неважно, из-за чего он может вдруг оказаться выключенным — из-за уборщицы с тряпкой, или из-за частичного отказа системы резервирования питания — но отрицать возможность его отключения на несколько секунд нельзя. Обычная операционная система в таких условиях вряд ли оставит пациенту шанс выжить — загрузка, проверка дисков, запуск программ — увы, это может занять минуты! В то же время Фантом «рождается во взрослом состоянии» — непосредственно в момент запуска он уже ровно таков, каков был в момент останова. Все программы сразу запущены, настроены и работают. Теперь перейдём на подводную лодку. Представим себе, что она попала в сложную ситуацию, и электричество на борту отключилось в силу неполадки. Неполадка быстро устранена командой, но лодка всё ещё мертва: компьютеры перезагружаются. В боевой ситуации несколько лишних десятков секунд могут стоить жизни всей команде.

Q: Ну — хорошо, всё понятно с войной и медиками, но где польза от Фантома на серверах?

A: Не забываем про дешевизну разработки — серверные приложения традиционно недёшевы. Но и кроме этого Фантому есть, что предложить. Фантом — система без переключений контекста между ядром и приложением. Обычная система имеет два режима — «всемогущий» режим, в котором работает ядро, и «прикладной» режим, в котором работают приложения. На этом основаны классические системы защиты в системах типа Unix/Linux и Windows. Переключения между режимами весьма дорогостоящи и снижают производительность прикладного ПО. Особенно сильно это проявляется в серверных приложениях. Защита в Фантоме построена по менее затратной технологии, и переключения режимов («колец защиты») не требуются.

Q: Я видел упоминание Фантома в связи с Amazon Cloud services. В чём идея?

A: Amazon Cloud — среда, предназначенная для запуска «имиджей» операционных систем. Идея её в том, что пользователь по необходимости «оживляет» нужное ему количество экземпляров системы, и пользуется ими. Фантом удобен в этой среде тем, что «оживление» даёт мгновенно готовую к работе среду, тогда как традиционный Linux после такого «оживления» нужно каким-то образом связывать с данными, настраивать, запускать в нём программы. Опять же, поработавший экземпляр Фантома можно «усыпить» целиком в одно движение, тогда как традиционные программы под Linux потребуют специальных и муторных доработок, для того чтобы быть пригодными к «усыплению».

Q: В каком состоянии находится проект сейчас?

A: Мы имеем систему, способную загружаться на эмуляторе компьютера и на реальном компьютере (ia32), запускать прикладные программы, завершать работу штатным образом с сохранением состояния, запускаться с восстановлением сохранённого состояния. Существуют средства кросс-разработки (компилятор и среда исполнения программ под управлением Windows/Linux). В настоящий момент в работе сохранение состояния при нештатном отключении. Следующие задачи — реализация базового графического интерфейса и минимального интерфейса пользователя.

Q: А что с переносом на другие платформы?

A: В 2011 году был начат перенос на Arm и MIPS. Версия для Arm в основном реализована и находится в стадии отладки.

Q: Это похоже на...?

A: Это, в зависимости от вашей религии, похоже на Java, Smalltalk, C#, Python, OS/400, iAPX432, Inferno, Grails, Singularity и т.д. и т.п.

Бизнес-вопросы

Q: И что — вы собираетесь на этом зарабатывать деньги?

A: Да.

Q: Как?

A: Мы рассматриваем несколько бизнес-моделей. Выбор конкретной — вопрос времени. Например, изначально предполагалось, что Фантом вряд ли может претендовать на то, чтобы быть серверной платформой. Но с успехом server side Java и появлением таких сред, как Amazon Cloud мы пересмотрели взгляд на сервера и рассматриваем их как перспективное направление для системы. Второе очевидное перспективное направление — карманные устройства. Третье — медицинские и военные применения. Самое сложное направление — десктоп — оставим на десерт. В этом уравнении слишком много неизвестных. Но — мы не отказываемся от этой задачи.

Q: Каков ожидаемый объём вложений?

A: Для нишевой версии системы — единицы миллионов долларов. Для десктоп-системы - заметно больше. Реализация для какого-либо сугубо конкретного применения может обойтись даже в несколько сотен тысяч. (Имеются в виду доллары конца 2008-го.:)

Q: А что можно заработать?

A: Десять баксов с каждого человека на планете в год. (Вы первый начали.)

Q: Ну а реально?

A: Давайте посчитаем вместе. Нокиа продаёт на 12 млрд в квартал, из них 9 — телефоны и сервис. Положим, телефоны там занимают 3 млрд, то есть 12 млрд в год. Положим, ОС (платформа) — 0,5% цены телефона. Это даёт нам $60 млн в год. Ну, то есть — не нам. К сожалению. Ну, или давайте посчитаем иначе. В мире продаётся 1,2 млрд телефонов в год. Если считать, что один доллар от цены — это софт, то — ну, на 1 вы умножить можете и сами.

Q: Ха-ха-ха. На рынке есть iPhone и Android, кому вы там нужны?

A: Технологически и с точки зрения user experience мы превосходим обоих. iPhone силён брендом и технологически его перебить сложно. Но и не нужно — он по определению не претендует на весь рынок. А Android пока никого ничем не впечатлил. А вот рынок разработчиков прикладного ПО Android нам подготовит, спасибо ему.

Технические вопросы

Q: Мне сказали, что Фантом будет работать очень медленно, так как основан на интерпретируемом коде.

A: 90% сегодняшнего профессионального ПО основано на «интерпретируемом» коде. Сюда относятся программы на языках Java, C#, PHP, Python, Ruby — короче говоря, всех современных языках. Это не означает, что такие программы работают медленно. Компиляция таких программ выполняется в традиционных системах прямо во время исполнения. Такой подход немного замедляет запуск программы, но в остальном производительность ничем не уступает, а порой (в случае с Java и C#) и превосходит производительность программ, написанных на устаревших языках (С++, Pascal, etc) — см. ссылки ниже. В операционной системе Фантом задержка при запуске программы устраняется, так как результат JIT-компиляции будет сохраняться системой для повторного использования. Кроме того, в силу отсутствия переключений контекста между ядром и прикладной программой Фантом обеспечит более высокую суммарную производительность реального кода, чем, например, классический Unix.

Если утверждение, что Java/C# программы могут быть быстрее программ на C/C++, кажется Вам глупым и не соответствующим действительности (мы получили много возмущённых комментариев от приверженцев Си на эту тему), то мы рекомендуем ознакомиться вот с этими статьями:

Реальное сравнение и теоретическое обоснование выигрышности Java в быстродействии.

Сравнение Java и GCC.

Сравнение большого числа компиляторов C/Java/C#. Рекомендуем прочесть раздел «SciMark 2.0».

Дополнительная информация: http://ru.wikipedia.org/wiki/JIT

Q: Реализован ли уже JIT в ОС Фантом?

A: Нет. Мы не уверены в том, что текущий формат байткода и семантики ядра является окончательным, и перейдём к работе над JIT после того, как семантика будет зафиксирована. Строго говоря, в течение последних 4-х лет работы над системой она не менялась, так что, скорее всего, это вопрос почти решённый. Требуется лишь убедиться в некоторых тонких аспектах работы системы в режиме рестарта. Для встраивания JIT в систему в качестве одного из вариантов рассматривается libjit, так что мы не ждём в этой части работы больших проблем.

Дополнительная информация: http://dotgnu.org/

Q: Как будет решаться проблема драйверов?

A: Отметим, что в последние 5 лет эта проблема существенно потеряла остроту. Множество драйверов существует в исходном коде, а количество разнообразных устройств существенно сократилось. Например, на сегодня всего три драйвера видеокарт могут покрыть, пожалуй, 95% компьютеров на рынке. И эти три драйвера могут быть перенесены из Linux. Множество периферийных устройств сегодня подключаются посредством USB или FireWire, что, фактически, означает, что требуется лишь два собственно драйвера — для портов USB и FireWire как таковых. А порты эти реализуются довольно стандартным образом. Так что эта проблема — хотя и остаётся достаточно серьёзной — перестала быть необъятной.

Q: Возможна ли поддержка механизма виртуализации (например: qemu + win23/linux), и как вы видите будущее этой технологии в фантоме?

A: Возможна, и нет никаких причин не реализовать её. Впрочем, мы, скорее, рассматриваем вариант работы самого Фантома и какой-либо другой ОС под общим гипервизором типа Xen. Одновременно поддержка Xen в Фантоме облегчит его запуск под Amazon Cloud.

Q: Говорят, в Фантоме нет файлов — это правда? Как же без файлов?

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

Q: А как же пользователь? Куда он положит свой вордовский документ?

A: Пользователь не заметит исчезновения файлов. Для него будут существовать папки и иконки-документы в них. Иконка будет активизировать (условно говоря — запускать метод editDocument в новой нити) объект, соответствующий документу пользователя. Просто документ будет храниться не в сериализованном «файловом» виде, а ровно в том виде, в котором он присутствует в программе и удобен для её работы. Это означает, что 1) программист больше не должен писать код записи состояния программы в файл и считывания его (это, в разных ситуациях, от 30 до 70% кода программы), 2) само «открытие документа» будет происходить существенно быстрее (нет процесса десериализации, нет никакого перемещения данных с места на место) и 3) любой документ может элементарно интегрировать в себя любой другой документ — просто добавив в себя ссылку на чужой объект.

Q: Что делать, если у меня испортилась часть диска? В обычной системе я потеряю часть файлов, а у вас — сразу всё. Верно?

A: Не совсем. Объекты в Фантоме маркированы таким образом, чтобы имея даже «обрывок» памяти их можно было восстановить. Проблемой является идентификация положения «обрывка» в адресном пространстве, но решение этой проблемы существует.

Q: Если программа плохо написана и «жрет» память, раньше можно было ее убить и запустить заново, а теперь?

A: И теперь. Собственно, надо различать работу программы и состояние программы. Фантом сохраняет состояние, делая ненужным «ручное» его сохранение, но он вовсе не обязует все программы непрерывно работать. То есть иметь запущенный процесс/нить.

Q: А на сайте XXX говорят, что вы ничего не придумали, а всё украли у YYY!

A: Пусть их. Мы предпочитаем общаться с теми, кто мало говорит, и много делает. И сами придерживаемся этого правила.

    Все записи