La société Vivo, détenant environ 10 % du marché mondial des smartphones (5e place parmi les fabricants de smartphones), a présenté le premier dépôt officiel du noyau du système d'exploitation BlueOS (Blue River OS). Le système d'exploitation BlueOS est développé depuis 2018 et est déjà utilisé dans la série de montres intelligentes Vivo Watch. Vivo travaille également sur l'application de BlueOS dans des lunettes intelligentes, des robots, des terminaux intelligents et des dispositifs AI grand public. Le code du noyau est écrit en langage Rust et est ouvert sous licence Apache 2.0. Les frameworks systèmes de BlueOS sont également écrits en Rust.
Le système d'exploitation BlueOS est initialement développé avec un accent sur la sécurité et utilise le langage Rust pour prévenir les vulnérabilités causées par des erreurs de gestion de la mémoire, qui, selon les statistiques de Google et Microsoft, représentent 70 % de toutes les vulnérabilités dans les systèmes d'exploitation. Pour garantir une gestion sécurisée de la mémoire dans BlueOS, une combinaison de l'utilisation de pointeurs intelligents à l'exécution et de vérifications lors de la compilation, fournies par le langage Rust (suivi de la propriété des objets, vérification de l'emprunt des variables, gestion de la durée de vie des objets), est utilisée.
Le noyau de BlueOS (Blue River Kernel) est optimisé pour une consommation minimale de ressources et peut être utilisé sur des plateformes embarquées, des appareils mobiles et des systèmes Internet des objets. Dans sa configuration minimale, le noyau nécessite seulement 13 Ko de mémoire vive pour fonctionner. De plus, le noyau prend en charge les architectures de processeurs modernes, y compris ARM et RISC-V. Sur le noyau est implémentée une bibliothèque standard C, prenant en charge les interfaces logicielles définies dans la norme POSIX, ainsi qu'une bibliothèque rust-std.
Le noyau fournit un planificateur de tâches, un système de fichiers, un mécanisme de gestion de la mémoire, une pile réseau et un ensemble de pilotes. Plusieurs algorithmes de planification des tâches sont pris en charge, notamment des algorithmes pour une répartition équitable des quanta de temps entre les processus et des algorithmes pour un fonctionnement en temps réel basés sur le calcul des priorités. Plusieurs algorithmes d'allocation de mémoire optimisés pour différents scénarios d'utilisation sont disponibles.
Un système de fichiers propriétaire avec une architecture hiérarchique classique basée sur inode est fourni, ainsi que des systèmes de fichiers tmpfs, devfs, sysfs, procfs, nfs et fat32. La pile TCP/IP prend en charge l'API POSIX Socket, socketfd et le traitement des données en mode bloquant et non-bloquant, et peut être utilisée dans des configurations avec plusieurs cartes réseau. Pour réduire la surcharge lors du transfert de données, une architecture à zero-copy est appliquée, éliminant le tampon intermédiaire.
Pour le développement de pilotes, une couche d'abstraction d'accès au matériel est proposée, permettant de créer des pilotes en Rust, ainsi que de porter des pilotes en C déjà conçus pour d'autres noyaux. La documentation du noyau est pour le moment limitée aux instructions sur la compilation et les tests, ainsi qu'à des conseils sur la mise en œuvre de vos propres appels système et sur la description des types de données de base. Pour les tests, il est recommandé d'utiliser QEMU (mps2-an385, mps3-an547, virt-aarch64, virt-riscv64) ou la carte Raspberry Pi Pico2.
Source : opennet.ru
