Прототип вітчизняної ОС Phantom на базі Genode буде готовим до кінця року

Дмитро Завалішин розповів про проект із портування віртуальної машини операційної системи Phantom для роботи в оточенні мікроядерної ОС Genode. В інтерв'ю наголошується, що основна версія Phantom вже готова до пілотних проектів, а версія на базі Genode буде доведена до готовності до застосування наприкінці року. При цьому на сайті проекту поки заявлено лише працездатний концептуальний прототип, стабільність та функціональність якого не доведені до рівня, придатного до промислового використання, а серед найближчих планів згадується формування альфа-версії, придатної для експериментів сторонніми розробниками.

Код проекту поширюється під ліцензією LGPL, але остання зміна переважно репозиторії датована листопадом 2019 року. Пов'язана з проектом публічна активність зосереджена у репозиторії із форком для Genode, який з грудня 2020 року підтримує Антон Антонов, студент із університету Іннополіс.

Операційна система Phantom з початку 2000-х років розвивалася як персональний проект Дмитра Завалішина, а з 2010 року була переведена під крило компанії Digital Zone, створеної Дмитром. Система примітна орієнтацією на високу надійність і використання концепції «все є об'єкт» замість «все є файл», що дозволяє уникнути використання файлів рахунок збереження стану пам'яті і безперервного циклу роботи. Програми в Phantom не завершуються, а лише зупиняються і відновлюють роботу з перерваної точки. Всі змінні та структури даних можуть зберігатися стільки часу, скільки необхідно додатку, при цьому спеціально програмісту не потрібно піклуватися про збереження даних.

Програми Phantom компілюються в байткод, який виконується в стіковій віртуальній машині, схожій на віртуальну машину Java. Віртуальна машина забезпечує персистентність пам'яті програм — система періодично скидає знімки стану віртуальної машини на постійний носій. Після вимкнення або аварійного завершення робота може бути продовжена, починаючи з останнього збереженого знімка пам'яті. Знімки створюються в асинхронному режимі і без припинення роботи віртуальної машини, але в снапшоті фіксується одноразовий зріз, ніби віртуальну машину зупинили, зберегли на диск і знову запустили.

Всі програми виконуються в загальному глобальному адресному просторі, що дозволяє обійтися без перемикань контексту між ядром і додатками, а також суттєво спрощує та прискорює взаємодію між додатками, що виконуються у віртуальній машині, які можуть обмінюватися об'єктами через передачу посилань. Поділ доступу здійснюється на рівні об'єктів, посилання на які можна отримати лише через виклик відповідних методів (арифметика покажчиків відсутня). Будь-які дані, зокрема числові значення, обробляються як окремі об'єкти.

Для програми робота виглядає безперервною і не залежить від перезавантаження ОС, аварійних завершень роботи та вимкнення комп'ютера. Модель програмування для Phantom порівнюється із запуском сервера додатків для об'єктної мови програмування, що ніколи не зупиняється. Як один з основних способів розробки додатків розглядається портування для програм Phantom на мові Java, чому сприяє схожість віртуальної машини Phantom з JVM. Крім компілятора байткоду для Java, проектом планується створення компіляторів для Python і C#, а також реалізація транслятора з проміжного коду WebAssembly.

Для виконання операцій, що вимагають високої продуктивності, таких як обробка відео та звуку, передбачена можливість запуску в окремих потоках бінарних об'єктів з нативним кодом (для збирання бінарних об'єктів використовується LLVM). Для доступу до низькорівневих сервісів ядра частина класів VM («внутрішні» класи) реалізована лише на рівні ядра ОС. Для запуску Linux-програм передбачена POSIX-прошарка, що виконує емуляцію викликів, необхідних для роботи Unix-процесів (персистентність для програм в POSIX-прошарку поки не забезпечується).

Прототип вітчизняної ОС Phantom на базі Genode буде готовим до кінця року

Традиційна ОС Phantom окрім віртуальної машини включає власне ядро ​​з реалізацією потоків, менеджера пам'яті, збирача сміття, механізмів синхронізації, системи вводу/виводу та драйверів для роботи з обладнанням, що помітно ускладнює доведення проекту до готовності до широкого застосування. Окремо розвиваються компоненти з мережевим стеком, графічною підсистемою та інтерфейсом користувача. Примітно, що графічна підсистема та віконний менеджер працюють лише на рівні ядра.

Для підвищення стабільності, переносимості та безпеки проекту зроблено спробу перенесення віртуальної машини Phantom для роботи з використанням компонентів відкритої мікроядерної операційної системи Genode, розробку якої займається німецька компанія Genode Labs. Для бажаючих поекспериментувати з Phantom на базі Genode підготовлено спеціальне складальне оточення на базі Docker.

Використання Genode дасть можливість використовувати вже перевірені мікроядра та драйвери, а також винести драйвери у простір користувача (у поточному вигляді драйвери написані на Сі та виконуються на рівні ядра Phantom). У тому числі з'явиться можливість використання мікроядра seL4, що пройшов математичну верифікацію надійності, що підтверджує, що реалізація повністю відповідає специфікаціям, заданим формальною мовою. Розглядається можливість підготовки подібного доказу надійності і для віртуальної машини Phantom, що дозволить досягти верифікації всього оточення ОС.

Як основна сфера застосування порту на базі Genode називається розробка додатків для різних промислових і вбудованих пристроїв. В даний час вже підготовлений набір змін для віртуальної машини і додані працюючі поверх Genode обв'язки для компонентів ядра, що забезпечують персистентність, і основних низькорівневих інтерфейсів. Зазначається, що віртуальна машина Phantom вже може працювати в 64-розрядному оточенні Genode, але ще належить реалізувати роботу VM в режимі персистентності, переробити підсистему драйверів та адаптувати для Genode компоненти з мережевим стеком та графічною підсистемою.

Прототип вітчизняної ОС Phantom на базі Genode буде готовим до кінця року
Прототип вітчизняної ОС Phantom на базі Genode буде готовим до кінця року
Прототип вітчизняної ОС Phantom на базі Genode буде готовим до кінця року


Джерело: opennet.ru

Додати коментар або відгук