Операционная система Redox 0.6, написанная на Rust: что нового в выпуске?

в 23:07, , рубрики: Redox 0.6, Rust, Блог компании Selectel, операционная система, Программирование, Софт
Операционная система Redox 0.6, написанная на Rust: что нового в выпуске? - 1

Спустя полтора года разработки авторы операционной системы Redox 0.6, написанной с использованием языка Rust, опубликовали новый выпуск. Новинку можно протестировать — для этого в сеть выложены загрузочные образы. Их объем составляет 61 МБ. Свежая версия может тестироваться уже на обычном «железе», а не в QEMU и VirtualBox.

Операционная система распространяется под свободной лицензией MIT. Что нового в версии 0.6?

  • Практически с нуля переписана система управления памятью ядра. Речи идет об rmm, kernel memory manager. Разработчикам удалось избавиться от утечек памяти, создававшие проблемы при использовании старого менеджера памяти. Также повышена и стабильность поддержки многоядерных систем.
  • В состав операционной системы включено несколько проектов, которые разработали студенты в рамках инициативы RSoC (Redox OS Summer of Code), включая разработки, связанные с поддержкой io_uring, ptrace, strace, gdb, дисковыми разделами и ведением логов.
  • Авторам проекта удалось доработать стандартную Си-библиотеку Relibc, которая способна работать не только в Redox, но и в дистрибутивах на базе ядра Linux.
  • Сейчас добавлен и собственный пакетный менеджер pkgar со связанным с ним форматом пакетов. Пакетный менеджер предоставляет верификацию источника по цифровой подписи. Также есть контроль целостности, возможность повторяемой сборки, автоматически обновления, передача изменившихся данных и независимость от каталога установки. В отличие от других форматов, pkgar включает лишь метаданные, которые необходимы для извлечения пакета.
  • Еще одно обновление заключается в переводе скриптов cookbook на новую сборочную систему, которая написана на языке Rust. В ней вместо Shell-сценариев для описания логики сборки предложены файлы в формате Tomt.
  • Большое количество времени ушло на борьбу с нарушениями совместимости, которые связаны с переработкой макроса Asm.

Что касается особенностей этой операционной системы, то она развивается полностью в соответствии с философией Unix. Ряд идей авторы позаимствовали из SeL4, Minix и Plan 9. Одна из основных «фишек» — использование концепции микроядра, при которой обеспечивается только взаимодейсвие между процессами и управление ресурсами. Остальная функциональность вынесена в библиотеки, которые могут использоваться как ядром, так и пользовательскими приложениями. Все драйверы выполняются в пространстве пользователя в изолированных sandbox-окружениях. Для совместимости с существующими приложениями предусмотрена POSIX-прослойка, которая дает возможность запускать многие программы без портирования.

Кроме того, разработчики использовали для своей ОС принцип «все есть URL». Так, для записи в лог может использоваться URL «log://», для взаимодействия между процессами «bus://», для сетевого взаимодействия «tcp://» и т.п. Что касается модулей, которые могут быть реализованы в форме драйверов, расширений ядра и пользовательских приложений, могут регистрировать свои обработчики URL. Пример — написание модуля обращения к портам ввода/вывода и привязать его к URL «port_io://», после чего можно использовать его для доступа к 60 порту через открытие URL «port_io://60».

Пользовательское окружение основывается на собственной графической оболочке OrbTk, предоставляющего API, похожий на Flutter, React и Redux. Браузер — Netsurf. В ходе развития проекта разработчики предусмотрели собственный пакетный менеджер, набор стандартных утилит (binutils, coreutils, netutils, extrautils), командная оболочка ion, стандартная Си-библиотека relibc, vim-подобный текстовый редактор sodium, сетевой стек и файловая система TFS, развиваемая на основе идей ZFS (модульный вариант ZFS на языке Rust). Конфигурация задаётся на языке Toml.

Операционная система Redox 0.6, написанная на Rust: что нового в выпуске? - 2

Автор: Seleditor

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js