Проект Kerla развивает Linux-совместимое ядро на языке Rust

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
26-Окт-2021 21:30

В рамках проекта Kerla ведётся разработка ядра операционной системы, написанного на языке Rust. Новое ядро изначально ориентировано на обеспечение совместимости с ядром Linux на уровне ABI, что позволит запускать в окружении на базе Kerla немодифицированные исполняемые файлы, собранные для Linux. Код распространяется под лицензиями Apache 2.0 и MIT. Проект развивает японский разработчик Сейя Нута (Seiya Nuta), известный созданием микроядерной операционной системы Resea, написанной на языке Си.
На текущем этапе развития Kerla может работать только на системах с архитектурой x86_64 и реализует базовые системные вызовы, такие как write, stat, mmap, pipe и poll, поддерживает сигналы, неименованные каналы и переключения контекста. Для управление процессами предоставляются такие вызовы, как fork, wait4 и execve. Имеется поддержка tty и псевдотерминалов (pty). Из файловых систем пока поддерживаются initramfs (применяется для монтирования корневой ФС), tmpfs и devfs. Предоставляется сетевой стек с поддержкой сокетов TCP и UDP, реализованный на базе библиотеки smoltcp.
Разработчиком подготовлено загрузочное окружение, запускаемое в QEMU или в виртуальной машине Firecracker c драйвером virtio-net, к которому уже можно подключиться по SSH. В качестве системной библиотеки используется musl, а в качестве пользовательских утилит - BusyBox.

На базе Docker подготовлена система сборки, позволяющая формировать собственные загрузочные initramfs с ядром Kerla. Отдельно развиваются похожая на fish программная оболочка nsh и GUI-стек Kazari на базе протокола Wayland.

Использование языка Rust в проекте позволяет сократить число ошибок в коде благодаря применению приёмов безопасного программирования и повышению эффективности выявления проблем при работе с памятью. Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами и учёт времени жизни объектов (области видимости), а также через оценку корректности доступа к памяти во время выполнения кода. Кроме того, Rust предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок, упрощает обработку входных значений благодаря средствам сопоставления с образцом.
Для разработки низкоуровневых компонентов, таких как ядро ОС, Rust предоставляет поддержку raw-указателей, упаковки структур, ассемблерных inline-вставок, встраивания файлов на ассемблере. Для работы без привязки к стандартной библиотеке имеются обособленные crate-пакеты для выполнения операций со строками, векторами и битовыми флагами. Из достоинств также отмечается встроенные инструменты для оценки качества кода (linter, rust-analyzer) и создания unit-тестов, которые можно запускать не только на реальном оборудовании, но и в QEMU.
===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_kerla, #_kernel, #_rust
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 13:58
Часовой пояс: UTC + 5