La compañía Vivo, que ocupa alrededor del 10 % del mercado mundial de smartphones (5.º lugar entre los fabricantes de smartphones), presentó el primer lanzamiento oficial de código abierto del núcleo del sistema operativo BlueOS (Blue River OS). El sistema operativo BlueOS se ha desarrollado desde 2018 y ya se utiliza en los smartwatches de la serie Vivo Watch. Vivo también está trabajando en la implementación de BlueOS en gafas inteligentes, robots, terminales inteligentes y dispositivos de IA para consumidores. El código del núcleo está escrito en el lenguaje Rust y se publica bajo la licencia Apache 2.0. Los marcos del sistema BlueOS también están escritos en Rust.
El sistema operativo BlueOS se ha desarrollado inicialmente con un enfoque en la seguridad y utiliza el lenguaje Rust para prevenir vulnerabilidades causadas por errores en la gestión de memoria, que según las estadísticas de Google y Microsoft representan el 70 % de todas las vulnerabilidades en los sistemas operativos. Para garantizar un manejo seguro de la memoria, BlueOS utiliza una combinación de punteros inteligentes en tiempo de ejecución y verificaciones en tiempo de compilación proporcionadas por el lenguaje Rust (seguimiento de la propiedad de los objetos, verificación de préstamos de variables, gestión del tiempo de vida de los objetos).
El núcleo de BlueOS (Blue River Kernel) está optimizado para un consumo mínimo de recursos y puede ser utilizado en plataformas integradas, dispositivos móviles y sistemas de Internet de las Cosas. En su configuración mínima, el núcleo requiere solo 13 KB de memoria RAM para funcionar. Además, el núcleo es compatible con arquitecturas de procesadores modernas, incluyendo ARM y RISC-V. Sobre el núcleo se implementa la biblioteca estándar de C, que admite las interfaces de programación definidas en el estándar POSIX, así como la biblioteca rust-std.
El núcleo proporciona un planificador de tareas, un sistema de archivos, un mecanismo de gestión de memoria, una pila de red y un conjunto de controladores. Se soportan varios algoritmos de planificación de tareas, que incluyen tanto algoritmos para la distribución equitativa de los cuantums de tiempo entre procesos, como algoritmos para trabajar en tiempo real basados en el cálculo de prioridades. También están disponibles varios algoritmos de asignación de memoria, optimizados para diferentes escenarios de uso.
Se proporciona un sistema de archivos propio con una arquitectura jerárquica clásica basada en inode, así como sistemas de archivos tmpfs, devfs, sysfs, procfs, nfs y fat32. La pila TCP/IP admite la API de socket POSIX, socketfd y el procesamiento de datos en modos bloqueantes y no bloqueantes, y puede utilizarse en configuraciones con múltiples tarjetas de red. Para reducir la sobrecarga en la transmisión de datos, se aplica una arquitectura de zero-copy que elimina el almacenamiento intermedio.
Para el desarrollo de controladores se ofrece una capa para abstraer el acceso a hardware, lo que permite crear controladores en el lenguaje Rust, así como portar controladores en lenguaje C que ya han sido creados para otros núcleos. La documentación del núcleo se limita por ahora a las instrucciones de compilación y pruebas, así como a consejos sobre la implementación de sus propias llamadas al sistema y una descripción de los tipos de datos básicos. Se recomienda utilizar QEMU (mps2-an385, mps3-an547, virt-aarch64, virt-riscv64) o la placa Raspberry Pi Pico2 para las pruebas.
Fuente: opennet.ru
