Полшага до «Фантома»

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

Полшага до «Фантома»

- Как возникла идея создания ОС «Фантом»?

- Почти 40 лет назад, когда в программировании только начала формироваться объектная парадигма, трансформируясь из научной идеи в реальный инструмент. Начав программировать на С++, я задумался: а нельзя ли эту объектную парадигму расширить на всю картину мира ПО, в том числе и на API операционной системы? Примерно тогда и родилось представление о некой «идеальной» операционной системе, концепция которой легла в основу того, что позже было названо ОС «Фантом». В ней нет защиты на уровне процесса — отдельных адресных пространств, но есть защита на уровне объекта. Каждая отдельная переменная защищена и доступна только тем, кто действительно имеет на нее ссылку. Это — и удобство, и безопасность, и простота в разработке.

К сожалению, для доведения идеи до реализации потребовалось больше времени, чем хотелось бы, но на момент появления идеи она была практически нереализуема — задуманное требовало уникального, специального процессора, о котором в 1990-х годах даже мечтать не приходилось. И только спустя время у нас появились технологии, которые сделали более реальным воплощение этой идеи, в частности, процессор «Эльбрус», или JIT-трансляция — кодогенерация «на ходу», позволяющая программно реализовать необходимый виртуальный процессор, функционирующий «поверх» физического. Собственно, развитие платформ Java и C#, которые как раз и живут в формате виртуального процессора, и убедило меня в том, можно двигаться в эту сторону. Примерно в 2006–2007 годах я начал первые эксперименты, просто чтобы попробовать, можно ли в действительности сконструировать подобную ОС. А еще через пару лет был сделан уже довольно ощутимый задел кода, который начал оформляться в систему, вызвавшую определенный интерес у моих коллег. С 2010 года мы приступили к работе над «Фантомом» уже всерьез, а через десять лет у нас появилась лаборатория в Университете Иннополис.

- В чем отличие «Фантома» от других операционных систем, не ориентированных на процессы?

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

Точного аналога ОС «Фантом» нет, хотя, разумеется, идеи по созданию подобной системы высказывались, но попытки их реализации были основаны на других технологических принципах. Была, например, операционная система EROS (Extreme Reliable Operating System), создатели которой говорили о том, что она создана в парадигме персистентности, однако, судя по доступным источникам, была реализована гораздо сложнее, чем «Фантом». И, главное, никто не видел ее работающей версии. Создатели OS/400 тоже двигалась в том же направлении, но концепция ортогональной персистентности в ней была реализована лишь частично. Аналогичная попытка была у Microsoft, но без персистентности. Иными словами, попытки создать системы на основе персистентности были, как и заявки на создание объектной ОС, но ни одна из них не дошла до стадии промышленной эксплуатации, а многие так и остались на этапе лабораторных исследований.

- В ОС «Фантом» обеспечивается персистентность памяти и безопасность данных?

- Да, но ценность персистентности даже не в этом, а в том, что если гарантировать программисту, что его код будет работать независимо от любых внешних воздействий, то исчезает целый набор ограничений современных сред программирования. Обычная программа в момент остановки вынуждена все свои компоненты: объекты, деревья, графы объектов и пр. разобрать, превратить в структуры данных для хранения на диске, записать, а потом при рестарте собрать и заново восстановить. Программисты должны прописывать все эти процессы, что занимает от 30% общего объема кода. Но еще хуже то, что ограничивается и сама модель данных, которую могут реализовать программисты, — не все модели данных естественным образом можно записать на диск. Продумывая новую программу, необходимо все это принимать во внимание. На удивление, все так к этому привыкли, что даже не замечают таких ограничений. Но если их исключить, то откроется принципиально новый уровень свободы — код станет компактнее, и у программиста появится больше времени на творческие задачи. Мало того, сегодня труд программиста чрезвычайно дорог и весьма актуальна задача снижения стоимости разработки ПО.

- Как обеспечивается безопасность данных?

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

Еще один момент, который важен с точки зрения безопасности, поскольку ОС гарантирует персистентность для приложения, — то, что можно создавать программы, вообще не использующие понятия «файл». Если программа никогда не заканчивает свою работу, то файлы ей не нужны. Как следствие, теряет смысл взлом системы. Традиционная программа всегда состоит из огромного количества файлов: основные исполняемые модули, подгружаемые библиотеки, массивы данных и т. д. Во все эти файлы злоумышленник может так или иначе внедрить свой код и пробраться в структуру программы. Но если файлов нет, то и внедряться некуда. В ОС «Фантом» есть переменные, которые хранятся бесконечный промежуток времени. Точнее — ровно столько, сколько существует программа, которая в ней нуждается. Поэтому любая переменная в «Фантоме» семантически заменяет файл. И это — только один из инструментов безопасности, на самом деле есть и другие, реализованные строго в рамках парадигмы ортогональной персистентности. Например, на уровне самой объектной среды в точках взаимодействия объектов могут быть организованы шлюзы, проверяющие правомочность совершения операции. Имеет ли право объект «А» запрашивать у объекта «Б» какие-то данные или доступ? Помимо этого в «Фантоме» каждая отдельная переменная подписана, какому пользователю она принадлежит.

- Как решается задача создания в реальном времени целостного снимка, логически содержащего состояние всех объектов ОС на конкретный момент времени?

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

- Как обеспечивается совместимость с унаследованным кодом?

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

- Как сегодня выглядит архитектура ОС «Фантом»?

- Ядро любой операционной системы состоит из двух частей: одна формирует среду исполнения программ, вторая обеспечивает взаимодействие системы с «железом». Вторая часть ценностью для нас не обладает и не является уникальной для «Фантома», поэтому было нецелесообразно тратить ресурсы на ее развитие и поддержку. Как следствие, возникла идея использовать часть ядра ОС Genode, базирующейся на микроядре Sel4, что ускорило доработку ОС «Фантом». Микроядро Sel4 — единственное сегодня, для которого математически доказана безошибочность кода. Постепенно мы откажемся от этой «прослойки» в виде программного кода Genode, получив собственную компактную реализацию ядра — код ОС «Фантома» достаточно прост и невелик по объему, в разы меньше, чем у Linux. Если внедрить в код «Фантома» правильное ядро, то можно будет рассчитывать, что в результате удастся доказать и правильность кода всей операционной системы в целом. Это — одна из задач, которую мы сейчас решаем вместе с Университетом Иннополис.

- Какова сфера применения ОС и ее текущий статус?

- ОС «Фантом» практически универсальна — концепция ортогональной персистентности не несет в себе ограничений. ОС может быть декстопной, серверной и мобильной, она также подходит для встроенных решений, требующих высокой надежности, например в медицине, робототехнике, системах управления предприятиями непрерывного цикла. Конкурент у «Фантома» сегодня — только ОС на базе Linux. Рабочая версия «Фантом» на базе ядра Genode должна быть готова в течение нескольких месяцев. Но это только первый шаг. Вокруг ОС «Фантом» формируется и сообщество, хотя пока еще относительно небольшое — его ядро составляют сотрудники группы компаний DZ Systems и студенты Университета Иннополис. Отечественная ИТ-индустрия демонстрирует неподдельный интерес к системе — имеется множество предложений о сотрудничестве и помощи в тестировании системы.

Дмитрий Волков — старший научный сотрудник, ИПМ им. М.В.Келдыша РАН (Москва).

11
3 комментария

Сколько лет она в состоянии «почти закончена»?

Ответить

В состоянии "почти закончена" - два месяца.

Ответить

Концептуально всё это звучит красиво, но давно и как-то без заметных результатов.
Сложно спорить с заявленными принципами, если не считать кашу в описании отличий.
Но всё ещё остаётся много вопросов и главный - кто кроме имперских параноиков будет вкладываться в создание (перенос) программ?

Ответить