Rust, современный язык системного программирования, ориентированный на производительность, безопасность и параллелизм, кажется идеальным выбором для создания новой операционной системы, и уже существует несколько таких проектов. Теперь есть новый, Тесей, описанный создателем Кевином Боосом как «эксперимент в структуре операционной системы и управлении состоянием».

Ключевой идеей Тесея является избежание того, что Боос и три других сотрудника из университетов Райса и Йельского университета называют «утечкой из штата».

В бумага Представленный на симпозиуме USENIX по проектированию и внедрению операционных систем в ноябре прошлого года, исследователи определили это как «когда один компонент программного обеспечения имеет измененные состояния в результате обработки взаимодействия с другим компонентом, так что их будущая корректность зависит от указанных состояний».

Редактирование кода для Тесея: разработчики рекомендуют Visual Studio Code

Редактирование кода для Тесея: разработчики рекомендуют Visual Studio Code

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

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

Владение, описанный документами Rust как «центральная особенность Rust», ключ к тому, как язык обеспечивает безопасность памяти, обеспечивает соблюдение трех правил:

  1. Каждое значение в Rust имеет переменную, которая называется его владельцем.
  2. Одновременно может быть только один владелец
  3. Когда владелец выходит за рамки, значение будет удалено
Читайте также:
На Windows 10 не запускается часть игр

Исследователи заявили, что для того, чтобы избежать утечки данных из государственного бюджета, необходимо переосмыслить структуру ОС, в частности, то, как ОС состоит из модулей. ОС Тесей состоит из множества крошечных компонентов, называемых ячейками, каждая из которых имеет четкие границы. Ячейки созданы на базе ящиков Rust (контейнеров проекта).

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

Это означает, что Тесей более тесно связан с Rust, чем другие операционные системы на основе Rust.

Ячейки в Тезее представляют собой ящики Rust, и их можно заменить для устранения проблем или обновления ОС.

Ячейки в Тезее представляют собой ящики Rust, и их можно заменить для устранения проблем или обновления ОС.

Управление состоянием осуществляется с использованием принципов, основанных на моделях клиент-сервер. Клиенты владеют своим состоянием, а серверы используют связь без отслеживания состояния, «которая требует, чтобы в этот запрос было включено все необходимое для обработки данного запроса».

Это знакомо по веб-моделям REST. Поэтому Тесей избегает таких вещей, как дескрипторы, указатели на ресурсы, принадлежащие операционной системе, в пользу прямого владения своими ресурсами.

Устойчивость в Тесее использует технику, называемую перестановкой ячеек, при которой новые ячейки заменяют существующие и принимают их зависимости. Старая ячейка фактически не удаляется, пока на нее не перестанет ссылаться какая-либо другая ячейка.

Восстановление после сбоя предполагает замену поврежденных ячеек новыми. Это, по утверждению исследователей, «позволяет [Theseus] выдерживать отказы на нижних уровнях системы перед лицом нескольких отказавших подсистем ».

Подобные механизмы позволяют получать обновления в реальном времени. В тесте на восстановление после сбоев исследователи выявили 800 000 сбоев и достигли 69% успешного восстановления.

Читайте также:
LiteOS операционная система от Huwaei весом 10 кб.

Как производительность?

«Мы не утверждаем, что Тесей в целом превосходит существующие ОС, такие как Linux … но наши результаты не указывают на существенные недостатки в производительности», — заявили исследователи на основе таких тестов, как LMBench.

Несмотря на экспериментальную архитектуру, есть ограничения. По словам исследователей, небезопасный код является «досадной необходимостью в среде низкоуровневого ядра» из-за необходимости взаимодействия с оборудованием. Еще одно ограничение заключается в том, что компоненты должны быть реализованы на безопасном Rust.

Могут поддерживаться и другие «безопасные или управляемые» языки, но для небезопасных языков потребуется аппаратная или программная изоляция. Разработчики также идут на компромисс в некоторых областях, таких как файловая система.

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

Звучит неудобно. «Текущий компромисс» состоит в том, чтобы поддержать стандарты устаревших файловых систем и согласиться с разливом состояния в этом случае.

В настоящее время Тесей на GitHub и состоит из 38 000 строк кода Rust и 900 строк сборки. Операционная система может быть построена на Linux, Windows с использованием WSL (подсистема Windows для Linux), macOS или в контейнере Docker. Его можно запустить в эмуляторе QEMU.

Команда любит Visual Studio Code для разработки и сказала, что у него «отличная кроссплатформенная поддержка Rust. Доступны и другие варианты, но мы их не рекомендуем».

Еще одна известная ОС на основе Rust — это Редокс ОС, в настоящее время находится в версии 0.6. Последнее крупное обновление было в декабре и включало полное переписывание диспетчера памяти ядра, множество обновленных и новых компонентов, включая значительно улучшенную библиотеку relibc (используемую большинством пользовательских приложений) и новый формат пакета под названием pkgar.

Redox OS - еще одна известная ОС на основе Rust, но с более знакомым Unix-подобным дизайном.

Читайте также:
Microsoft решила вести тотальную слежку за всеми пользователями Windows

Redox OS — еще одна известная ОС на основе Rust, но с более знакомым Unix-подобным дизайном.

Зачем возиться с Тесеем, когда у нас есть Редокс?

Ответ заключается в том, что у этих двух проектов мало общего, кроме использования Rust и что они являются новыми операционными системами. Redox поддерживает системные вызовы, подобные Unix, и имеет архитектуру, «во многом вдохновленную MINIX», согласно к его документам.

Redox будет более знаком разработчикам. Тем не менее, обратите внимание, что Redox действительно стремится быть устойчивым с изолированными компонентами, устойчивостью к отказу одного компонента, который приводит к сбою других компонентов, и ограниченному обмену данными между компонентами. Разработчики утверждали, что Redox предназначен «для пользователей, которым нужны минимальные проблемы с их компьютерными системами». Это похоже на большинство из нас.

Еще одна операционная система на основе Rust: Tock, предназначен для встраиваемых систем. Есть и другие, но большинство из них не очень активны.

Вопрос, поднятый Тесеем, заключается в том, может ли радикально отличная новая операционная система иметь достаточные преимущества для преодоления огромных трудностей, связанных с ее установкой в ​​мире, столь сильно инвестированном в существующие, такие как Linux (и Android на базе Linux), macOS и Windows.

Google имеет хорошие шансы с Фуксия, возможно. Однако вариант на основе Rust привлекателен, и такие проекты, как этот и Redox OS, заслуживают внимания. ®