L'azienda Vivo, che detiene circa il 10% del mercato globale degli smartphone (5° posto tra i produttori di smartphone), ha presentato il primo rilascio ufficiale e aperto del kernel del sistema operativo BlueOS (Blue River OS). Il sistema operativo BlueOS è in sviluppo dal 2018 ed è già utilizzato negli smartwatch della serie Vivo Watch. Vivo sta anche lavorando all'applicazione di BlueOS in occhiali intelligenti, robot, terminali intelligenti e dispositivi AI di consumo. Il codice del kernel è scritto in Rust ed è disponibile sotto licenza Apache 2.0. Anche i framework di sistema di BlueOS sono scritti in Rust.
Il sistema operativo BlueOS è inizialmente sviluppato con un focus sulla sicurezza e utilizza il linguaggio Rust per prevenire vulnerabilità causate da errori nella gestione della memoria, che secondo Google e Microsoft rappresentano il 70% di tutte le vulnerabilità nei sistemi operativi. Per garantire una gestione sicura della memoria in BlueOS, viene utilizzata una combinazione di smart pointer durante l'esecuzione e controlli a livello di compilazione forniti dal linguaggio Rust (tracciamento della proprietà degli oggetti, verifica del prestito delle variabili, gestione della durata degli oggetti).
Il kernel di BlueOS (Blue River Kernel) è ottimizzato per un minimo consumo di risorse e può essere utilizzato su piattaforme embedded, dispositivi mobili e sistemi IoT. In una configurazione minima, il kernel richiede solo 13 KB di RAM per funzionare. Inoltre, il kernel supporta le architetture di processori moderne, inclusi ARM e RISC-V. Sulla parte superiore del kernel è implementata la libreria standard C, che supporta le interfacce di programmazione definite nello standard POSIX, così come la libreria rust-std.
Il kernel fornisce uno scheduler di task, un file system, un meccanismo di gestione della memoria, uno stack di rete e un insieme di driver. Supporta diversi algoritmi di pianificazione dei task, tra cui algoritmi per una distribuzione uniforme dei quantum di tempo tra i processi e algoritmi per funzionare in tempo reale basati sul calcolo delle priorità. Sono disponibili diversi algoritmi di allocazione della memoria, ottimizzati per diversi scenari d'uso.
È disponibile un file system proprietario con un'architettura gerarchica classica basata su inode, oltre a file system tmpfs, devfs, sysfs, procfs, nfs e fat32. Lo stack TCP/IP supporta l'API POSIX Socket, socketfd e la gestione dei dati in modalità bloccante e non bloccante e può essere utilizzato in configurazioni con più schede di rete. Per ridurre l'overhead nella trasmissione dei dati, viene utilizzata un'architettura zero-copy, che esclude il buffering intermedio.
Per lo sviluppo di driver è disponibile uno strato per l'astrazione dell'accesso all'hardware, che consente di creare driver in Rust e portare driver scritti in C, già creati per altri kernel. La documentazione del kernel è attualmente limitata a istruzioni per la compilazione e il testing, nonché a suggerimenti su come implementare le proprie chiamate di sistema e descrivere i tipi di dati di base. Per il testing si consiglia di utilizzare QEMU (mps2-an385, mps3-an547, virt-aarch64, virt-riscv64) o la scheda Raspberry Pi Pico2.
Fonte: opennet.ru
