Российскую операционную систему «Фантом» довели до тестирования после 12 лет разработки с нуля Статьи редакции
Система использует необычную архитектуру, не похожую на Windows и Linux.
Основная версия операционной системы «Фантом» готова для пробных проектов, а полноценный релиз запланирован на конец 2022 года. Об этом главный разработчик системы Дмитрий Завалишин сообщил в интервью изданию CNews. Завалишин работает над системой с 2010 года вместе с сотрудниками холдинга DZ Systems, первую компанию которого он основал в 2005 году.
Система «Фантом» отличается от классических Windows, Linux и macOS — она использует персистентную виртуальную память, управляемый код и глобальное адресное пространство.
- Персистентная виртуальная память подразумевает «непрерывность» выполнения процессов и высокую надёжность хранения данных. Приложения «не видят» перезагрузок и выключений, с их точки зрения система работает без остановок и постоянно сохраняет все изменения данных. Пользователю не нужно самому заботиться о сохранении файлов и резервных копий — даже аварийное завершение не повредит их. Файлов в «Фантоме» вообще нет — вместо них система оперирует объектами, которые доступны напрямую по указателям.
- Управляемый код защищает каждый объект и не даёт программисту вручную работать с памятью — это сразу отсекает большую часть ошибок и уязвимостей, которые повреждают данные пользователя и позволяют распространяться вирусам. Классические системы защищают только процессы друг от друга, тогда как внутри них может происходить буквально что угодно.
- Глобальное адресное пространство обеспечивает максимальную производительность выполнения программ. Классические системы делят память на пространство ядра и пространство пользователя — в первом работает ядро системы (центральная часть, управляющая всеми ресурсами), во втором — приложения пользователя. Во время работы системе приходится миллионы раз в секунду переключаться между этими пространствами, что плохо сказывается на производительности. «Фантом» избавлен от этих переключений — все процессы взаимодействуют друг с другом через прямую передачу ссылок на объекты. В классической системе это чрезвычайно опасный подход, но не в системе с управляемым кодом.
Основная ниша «Фантома» это встраиваемые системы — управление промышленным оборудованием и бытовой техникой, интернет вещей и прочие задачи, где сейчас господствует Linux. DZ Systems работает над переносом «Фантома» на фреймворк Genode — специальную «обвязку» для микроядерных операционных систем, позволяющую запускать обычные Linux-программы. Именно эта версия должна выйти к концу 2022 года.
В дальнейшем Завалишин с коллегами планируют перенести «Фантом» на микроядро seL4, чтобы математическим способом проверить всю систему и доказать отсутствие в ней ошибок и уязвимостей. Это позволит создать основу для построения крайне надёжных и защищённых программных комплексов.
Комментарий недоступен
Если проявятся преимущества этого подхода - то она сама взлетит.
Потенциально преимуществ много - например вообще не надо писать код "запуска" программы, подтягивания файлов, ресурсов и прочего. Все программы там по умолчанию "запущены". То-же самое с сериализацией-десериализацией данных - её там просто нет. Отваливаются целые большие слои работы, на которые программисты тратят кучу времени в традиционных операционках.
В вебдеве полно примеров когда никому не известная но удачная библиотека/фреймфорк всплывает и становится мейнстримом.
В любом случае лучше пробовать, экспериментировать, не пропадёт.
Комментарий недоступен
Как обычно, через разные интерфейсы
Комментарий недоступен
Это объектно-ориентированная операционка. У неё все данные - это объекты. Если внутрь операционки прилетела картинка, то можно будет пощупать её свойства: width, height, draw() и т.д.
Т.е. пишешь http-интерфейсу урл, он всё что надо скачивает, парсит и выплёвывет готовый к употреблению объект.
Это все было уже в Смоллтоке в 70х. Нет никакой программы - создаешь классы, обьекты и посылаешь им сообщения. Но перенести с компьютера на компьютер то что вы написали - страшный геморрой, контроль версий невозможен в принципе, а если по ошибке поменять что-то системное - вся работа насмарку.
Да. Завалишин у себя в блоге так и писал: "оно работает, теперь начинается самое интересное - как со всем этим жить".
Придумают что-нибудь.
Комментарий недоступен
Объектно-ориентированные языки которые всю вашу объектно ориентированность перемалывают и выдают exe-файл. Который надо запустить, он подтянет все dll-файлы и ресурсы, развернёт свои красивые структуры данных в памяти и будет жить в своём мирке, общаясь с окружающей системой постоянно сериализуя и десериализуя всякое барахло. Кроме того, этот exe содержит в себе вкомпилированные библиотеки типа stdlib, работы со строками, парсеры-фигарсеры - они там вкомпилены в сам экзешник! И вот сколько у вас на компе экзешников и dll-ов - столько раз в них вкомпилировано одно и то-же барахло.
Современные операционки - это сущий бардак. Давно пора его перетряхнуть.
Комментарий недоступен
Должна быть ровно одна копия каждой библиотеки.
Комментарий недоступен
Ладно, возможно с этим я облажался.
Вот это хреново само по себе. Дотнет ооооочень тяжелый, местами глючный, и заточен только под Венду. Для Доты 2 сойдет, но речь в данном случае не о попкорне, а о серьезных системах.
Комментарий недоступен
Для библиотек ядра. Или лежащих по конкретному пути (в память будет загружена одна исполняемая копия). Но, например, есть "зло" - snap-пакеты (и их sandbox-ы).
> Программа, скомпилированная под Windows, не таскает с собой все dll.Смотря как компилировать и смотря какие dll. Например, msvcr** вполне можно прилинковать к программе. И гипотетическая домохозяйка не увидит "msvcr120.dll не найден".
Ну а почему нет? По меньшей мере, очень интересное архитектурное решение.
Вопрос в том, до какого уровня это должно быть "закожено" в операционке. Реализовывать прикладные вещи, типа "скачай файл по HTTPS" - несколько глупо. Сколько лет, например, ждали поддержки SNI у Apache HTTP Client (Java)? А комьюнити куда больше, чем у этого.
Комментарий недоступен
Как таковая экономия на строках при разработке, на мой взгляд, является абсолютно не обоснованным занятием.
Пусть код будет многословнее, но понятнее и что самое важное легче поддерживаемым.
С другой стороны я с Вами абсолютно согласен, что наследие прошлого, обратная совместимость, конвертация данных/передача данных между различными процессами/сервисами заставляют кодера делать множество различных телодвижений и порой вносят изрядное кто-во точек отказа. Тот же пример с сериализацией в php и Java.
Но я к сожалению не уверен, что подобных танцев с бубном не возникнет в новой ОС. К сожалению все на перед продумать не представляется возможным. И плюс к тому же новая ОС она же не будет работать в вакууме и очень может быть, что ей нужно будет коммуницировать с тем же Linux или win. Что в свою очередь заставит плясать местами под подходы принятые в выше указанных ОС.
Относительно фреймворков в вебе… Тут на мой взгляд не совсем с той стороны нужно смотреть.
В вебе за то, что взлетает фреймворк голосуют не конечные пользователи, а разработчики.
А с новой ОС нужно проделать будет не менее титанический труд по созданию комьюнити разработчиков которые начнут использовать данную ОС в своих проектах. И это ещё тот труд и финансовые вложения.
Но в любом случае ребятам респект. Очень интересные концепции реализуют в коде!
Удачи в развитии проекта!