Операционная система фантом

Главные преимущества модели

Удешевление разработки

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

Отказоустойчивость

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

Высокая производительность

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

Прикладное значение ОС

Операционная система «Фантом» имеет не только академическое, но и прикладное значение. Она обеспечивает низкую стоимость разработки приложений и высокую надежность при эксплуатации. Модель ОС гарантирует софту сохранение состояния и его восстановление при рестарте системы, а это означает, что после отказа питания компьютер, во-первых, очень быстро загрузится, а во-вторых, продолжит работу с момента последнего «снимка». Для критичных областей применения снимок можно делать достаточно часто. Несколько примеров ситуаций, в которых это свойство весьма полезно:

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

Основные отличительные черты

  • Управляемый код, защита памяти на уровне объекта (а не процесса). Отсутствие арифметики указателей в управляемом коде позволяет избежать многих проблем, присутствующих в неуправляемом коде.
  • Глобальное адресное пространство, весьма эффективные и дешёвые IPC. Единое адресное пространство позволяет передавать объект от одного процесса (приложения) к другому путём простой передачи ссылки на этот объект. Безопасность достигается благодаря отсутствию арифметики указателей, невозможности для прикладной программы получить ссылку на объект иначе, как путём вызова публичного метода, использованию байткода.
  • Персистентность — гарантированное восстановление состояния операционной системы на момент последнего снимка памяти. Прикладной код «не видит» перезагрузок ОС и может жить вечно — отсюда отсутствие потребности в понятии «файл» — любая переменная или структура данных может храниться вечно и при этом быть доступна напрямую по указателю. В отличие от гибернации в других ОС, персистентность памяти заложена в основополагающих принципах построения ядра ОС Фантом, производится прозрачно для приложений, в большинстве случаев не требует доработки прикладного ПО, персистентность сохраняется даже при аварийной остановке компьютера.

Ссылки

Официальные сайты

  • Операционная система «Фантом». Digital Zone. Дата обращения 6 июня 2018.
  • Репозиторий исходных текстов ОС «Фантом»., Github, Dmitry Zavalishin

Обзоры в прессе

  • PhantomOS: держим курс на ортогональную персистентность. Часть 1. — «Можно ли в наши времена программисту-одиночке создать с нуля очередную новую операционную систему, причём с принципиально иным устройством, отличным от общепринятого? Осталось ли ещё место на современном переполненном конкуренцией Олимпе ИТ как для совершенно новых идей, так и для смелых людей, их реализующих?».
  • PhantomOS: держим курс на ортогональную персистентность. Часть 2.
  • Дмитрий Завалишин. Операционная система «Фантом». Открытые системы (10 мая 2011). — «Практически все сегодня пользуются операционными системами. Но хороши ли операционные системы современности, решают ли они все стоящие перед ними задачи, возможен ли прогресс в этой области?». Дата обращения 11 мая 2011. Архивировано 13 мая 2012 года.
  • Андрей Письменный. Дмитрий Завалишин об операционной системе «Фантом». Компьютерра (9 июля 2010). — «В ОС «Фантом», которую разрабатывают в России, нет разницы между запущенными и не запущенными приложениями. Автор «Фантома» уверен, что именно в этом направлении будут развиваться операционные системы.». Дата обращения 27 апреля 2011.
  • Андрей Майоров. Стенограмма доклада про Фантом-ОС, сделанного Дмитрием Завалишиным на ADD-2010. Habrahabr (25 апреля 2011). — «Дмитрий Завалишин рассказал о текущем состоянии в разработке своего любимого детища — оригинальной операционной системы PhantomOS, близкой по концепции Microsoft Singularity, но при этом open-source (опубликована большая часть исходных кодов этой операционной системы).». Дата обращения 27 апреля 2011. Архивировано 13 мая 2012 года.
  • Максим Белоус. Фантом отечественной сборки. PC Magazine (23 апреля 2009). Дата обращения 27 апреля 2011. Архивировано 13 мая 2012 года.
  • Андрей Анненков. Phantom Operating System. IT Today (13 февраля 2011). Дата обращения 27 апреля 2011. Архивировано 13 мая 2012 года.
  • Ted Dziuba. Russian rides Phantom to OS immortality (англ.). The Register (3 February 2009). — «The iPhone that never dies». Дата обращения 27 апреля 2011. Архивировано 13 мая 2012 года.

Для улучшения этой статьи по информационным технологиям желательно:

  • Проставив сноски, внести более точные указания на источники.

Дистрибутивы

  • ALT Linux (Simply Linux)
  • Alfa OS
  • Astra Linux
  • Calculate Linux
  • LinuxWizard
  • PuppyRus Linux
  • Red OS
  • Rosa Linux
  • RunOS
  • Russian Fedora
  • МСВСфера
  • НауЛинукс
  • Raidix
  • Kraftway Terminal Linux
  • WTware
  • Ульяновск.BSD
  • Остановленные проекты: AgiliaLinux
  • ASPLinux
  • EduMandriva
  • InfraLinux
  • Linux XP
  • MOPSLinux
  • ВС Школьный Линукс

Любительские

  • BKUNIX
  • Express OS
  • Kolibri
  • MagOS linux
  • Matuntu
  • Runtu
  • Остановленные проекты: Miraculix
  • Фантом

Исторические

ОСРВ

  • Embox
  • Jet OS
  • Kaspersky OS
  • RelMK-653
  • Заря-РВ
  • МОС-ОП
  • Нейтрино
  • КПДА.00002-01 (QNX)
  • ос2000 (Багет 2.х)
  • ос3000 (Багет 3.х)
  • Багет 4.х
  • POK
  • ЭОС

Специальные

  • PTS-DOS (DOS-Багет)
  • Атликс
  • госЛинукс (ТД ОС АИС ФССП России)
  • Заря
  • ИНТРОС В/ВМ
  • МСВС
  • ЗОС Оливия
  • ОМОНИМ
  • ОСь (OS-RT)
  • Рассвет
  • РоМОС
  • Синергия 1.0
  • Синтез-ОС
  • Форос
  • Циркон
  • Эльбрус (OS_E90
  • OSL)
  • Янукс
  • CROS-SCADA
  • Ivan OS

Мобильные: Sailfish Mobile OS RUS на android: Яндекс.Кит Taiga YOTA OS 3.0 на tizen: Z3, elvees-salut

Русская операционная система. ОС Фантом


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

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: Насколько дешевле будет производить программы на основе ОС Фантом?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Стек стеком погоняет, или преобразование байткода виртуальной машины Java в байткод машины Фантом ОС

ОС Фантом — экспериментальная операционная система, содержащая на прикладном уровне виртуальную байткод-машину в персистентной оперативной памяти.
Один из двух ключевых запланированных для ОС Фантом путей миграции существующего кода — преобразование байткода Java в байткод Фантом.
Надо сказать, что эти виртуальные машины изрядно, хотя и совершенно случайно, похожи. Виртуальная машина Фантома была спроектирована тогда, когда про Явскую я ещё ничего не знал, но, наверное, сходство целей привело к сходству принятых решений.
Обе машины — стековые. Обе оперируют двумя отдельными стеками — стеком для работы с объектами (на стеке лежат только ссылки), и бинарным стеком — для вычислений. Машина Фантома имеет также отдельные стеки для фреймов функций и ловушек исключений. Как эта часть устроена в JVM, я не знаю до сих пор, но полагаю, что вряд ли кардинально отличным образом.
Естественно, что и набор операций стековых машин местами схож как две капли.
Но, безусловно, есть и весьма существенные отличия.
Во-первых, виртуальная машина Фантома предназначена для работы прикладного кода в менее дружественной среде. Ява исходит из того, что каждая программа живёт в отдельном адресном пространстве, и всё, что вокруг — “наш” код. Фантом допускает прямые вызовы между приложениями разных пользователей и разных программ, что требует более жёсткого отношения к некоторым аспектам виртуальной машины, включая тот же вызов, да и интерфейс объекта вообще. Например, мы не можем полагаться на то, что вызванный метод ведёт себя “прилично” — нельзя давать ему доступ в свой стек, нельзя полагаться на наличие или отсутствие возвращаемого значения. Нельзя гарантировать различие между методом, функцией и статической функцией. То есть, мы можем предполагать, что именно мы вызываем, но что нам «подсунули» с той стороны — неизвестно.
В силу всего сказанного, вызов в Фантоме унифицирован абсолютно — это всегда вызов метода (есть this и есть класс), и всегда возвращается значение, которое для void метода равно null и явно уничтожается вызывающим кодом. Это гарантирует, что какая бы ошибка вызова не случилась, что бы не подвернулось в качестве предмета вызова, протокол вызова и возврата будет соблюдён.
Есть отличие и в работе с целыми. Ява выделяет их в отдельную категорию типов, отличную от объектных, “классовых” типов — java.lang.Integer и int — разные вещи в Яве. Компайлер иногда удачно скрывает этот факт, но внутри они различаются. Фантом и здесь идёт в сторону максимализма. Целое — честный объект. Его можно вытащить на целочисленный стек и там посчитать в “необъектной”, бинарной форме, но он вернётся в форму объекта будучи присвоен переменной или передан в параметре. Это, кстати, тоже вытекает из требования униформности протокола вызова метода — методы, возвращающие целое и объект по протоколу тождественны. (То же самое, очевидно, относится и к другим «интегральным» типам — long, float, double.)
Есть и другие отличия, например, протокол подключения того, что в Яве называется native методы. В Фантоме это «системные вызовы», и, опять же, на уровне вызова метода они ничем не отличимы от обычного “честного” метода. (Код такого метода содержит специальную инструкцию для “ухода” в ядро ОС, но “снаружи” метода это не видно. Это, в частности, позволяет наследовать и оверрайдить такие методы традиционным путём, через замену VMT.)
Представляется (по крайней мере, мне представлялось), что преобразование байткода одной стековой машины в байткод другой стековой машины — элементарная задача. В конце концов, там и там стеки, и 90% операций — просто идентичны. Ну нет никакой разницы между Фантомовским и Явским байткодом целочисленного сложения: поднять два целых со стека, сложить, положить на стек результат.
Первый подход к трансляции опирался именно на модель последовательного преобразования байткода Ява в фантомовский. Быстро выяснилось, что сделать это линейно нельзя. Совсем. Приходится “отрабатывать” при разборе Явского кода “работу” стека, и синтезировать промежуточное представление. Часть такого транслятора была написана и признана негодной — трудоёмкость превзошла все мыслимые границы. К примеру, локально, в точке вызова, совершенно невозможно выяснить, объектный это вызов (первый параметр — this), или нет. Яве всё равно, а нам важно. Выяснить это можно, но нужно приложить немало усилий. Это даже при условии, что писать приходилось только анализатор — бекенд компилятора, генерирующий вполне надёжный байткод Фантома, к тому времени стабильно работал (в силу того что был готов и стабильно использовался компилятор “собственного” языка).
В этом месте работа бы застопорилась, не попадись мне под руки фреймворк по имени Soot. Изначально предназначенный для статического анализа и инструментовки Ява байткода, он идеально подошёл для описанной задачи. Soot парсит класс-файл JVM и генерирует чрезвычайно вменяемое внутреннее представление — дерево операций с компактным (полтора десятка типов узлов) базисом, плюс информация о типах и другой метаинформации.
С этой точки конверсия производится катастрофически проще — фактически, нужно преобразовать дерево в дерево. На сдачу, кстати, получаем и поддержку Dalvik (Andrid VM bytecode).
Нельзя сказать, что теперь всё безоблачно. Хотя первые примитивные Ява-классы уже прошли компиляцию и начата работа по юнит-тестам компилятора. Есть ещё масса проблем.
Например: в фантоме наследование от классов с “внутренней” реализацией предполагалось запретить. В то же время, Ява “привыкла” видеть у строки тип java.lang.String, а не internal.String. Но это ещё ладно! Сложнее со сравнением объектов. В Яве == для целых и строк работает различно, сравнивает значения и ссылки, соответственно. Более консистентный Фантом чётко различает сравнение значений и ссылок, а значит простое на вид преобразование операторов == и != вызывает проблему — надо или разбираться с типом, или вводить в базис “явский” байткод, который ведёт себя как описано выше. Что “неаккуратненько”, зато чертовски просто.
Вообще изначально предполагалось, что систему типов Явы надо инкапсулировать, представив их в дереве типов виртуальной машины Фантом внутри ветки java. Фактически, сейчас я от этого отказался. Представляется, что это вызовет больше проблем, чем решит.
Смешная проблема была с доступом к публичным полям: в Фантоме их… нет. Вообще. Только методы. Обход проблемы потребовал автоматической генерации и использования геттеров и сеттеров. Что, наверное, тоже проблематично — сейчас им даются типовые “Явские” имена getVariable/setVariable, что может вызвать конфликт. Нужно, видимо, сделать имена “генерируемых” методов специальными и недоступными из обычного пространства имён методов, но делать так тоже несколько жалко — автогенерация публичных геттеров-сеттеров имеет прикладную ценность.
Следующей проблемой будут примитивы синхронизации. В Яве точкой синхронизации может быть любой объект. Держать для этого в каждом объекте Фантома специальные поля не хочется, но уметь как-то “достраивать” объекты надо. Причём не только синхронизация но и, например, механизм слабых ссылок требует “навешивать” на объект дополнительные сущности. В данный момент это предполагается делать через поле заголовка объекта, на которое можно, при необходимости, вешать объект или множество объектов для обслуживания специальных случаев. У большинства “линейных” объектов это поле будет пустовать, и заполняться только если с ним делают что-то особенное.
Уф. Наверное, для начала на этом поставим точку с запятой.
Ну и да, это всё — open source. Если интересно принять участие в работе над ОС, или в вашем проекте нужна готовая виртуальная машина, проект легко находится на гитхабе по ключу phantomuserland.