Производитель смартфонов Vivo представил первый официальный открытый релиз ядра операционной системы BlueOS (проект Blue River OS). Операционная система BlueOS развивается с 2018 года и уже используется в умных часах серии Vivo Watch. В Vivo работают над применением BlueOS в умных очках, роботах, умных терминалах и потребительских устройствах с ИИ. Исходный код проекта написан на языке Rust и опубликован на GitHub под лицензией Apache 2.0. На языке программирования Rust также написаны системные фреймворки BlueOS.
По информации OpenNET, проект BlueOS изначально развивается с оглядкой на обеспечение безопасности и использует язык Rust для предотвращения появления уязвимостей, вызванных ошибками при работе с памятью, которые по статистике Google и Microsoft составляют 70% от всех уязвимостей в ОС. Для обеспечения безопасной работы с памятью в BlueOS используется комбинация из применения умных указателей во время выполнения и проверок на этапе компиляции, предоставляемых языком Rust, например, отслеживание владения объектами, проверка заимствования переменных, учёт времени жизни объектов.
Ядро BlueOS (Blue River Kernel) оптимизировано для минимального потребления ресурсов и может использовать на встраиваемых платформах, мобильных устройствах и системах интернета вещей. В минимальной конфигурации ядро BlueOS требует для своей работы всего 13 КБ оперативной памяти. При этом ядро BlueOS поддерживает современные процессорные архитектуры, включая ARM и RISC‑V. Поверх ядра реализована стандартная библиотека C, поддерживающая программные интерфейсы, определённые в стандарте POSIX, а также библиотека rust‑std.
Ядро BlueOS предоставляет планировщик задач, файловую систему, механизм управления памятью, сетевой стек и набор драйверов. Проект поддерживает несколько алгоритмов планирования задач, среди которых алгоритмы для равномерного распределения квантов времени между процессами и алгоритмы для работы в режиме реального времени на основе расчёта приоритетов. В BlueOS доступно несколько алгоритмов выделения памяти, оптимизированных для разных сценариев использования.
В рамках решения BlueOS предоставляется собственная файловая система с классической иерархической архитектурой на базе inode, а также файловые системы tmpfs, devfs, sysfs, procfs, nfs и fat32. В BlueOS TCP/IP стек поддерживает POSIX Socket API, socketfd и обработку данных в блокирующем и не блокирующем режимах, и может использоваться в конфигурациях с несколькими сетевыми картами. Для снижения накладных расходов при передаче данных в BlueOS применяется архитектура zero‑copy, исключающая промежуточную буферизацию.
Для разработки драйверов в BlueOS предлагается слой для абстрагирования доступа к оборудованию, позволяющий создавать драйверы на языке Rust, а также переносить драйверы на языке C, уже созданные для других ядер. Документация к ядру BlueOS ограничена инструкциями по сборке и тестированию, а также подсказками по реализации своих системных вызовов и описанию базовых типов данных. Для тестирования проекта предлагается использовать QEMU (mps2-an385, mps3-an547, virt‑aarch64, virt‑riscv64) или плату Raspberry Pi Pico2.
Источник: habr.com