Après 8 mois de développement, le premier prototype du noyau de type Unix, Moss, partiellement compatible avec Linux, a été publié. Le code est écrit en Rust avec des insertions en assembleur et est distribué sous licence MIT. Actuellement, le projet prend en charge uniquement l'architecture Aarch64, peut être exécuté dans QEMU et a été testé sur des cartes Raspberry Pi 4, Jetson Nano, AMD Kria et imx8. Selon les développeurs, le noyau peut facilement être porté vers d'autres architectures, telles que x86_64 et RISC-V, grâce à une couche pour abstraire le support matériel.
À ce stade du développement, Moss a implémenté 51 appels système Linux et assure la compatibilité binaire avec les applications Linux, suffisante pour exécuter le shell Bash et la plupart des utilitaires de l'ensemble BusyBox. Par rapport à l'architecture de Moss, on note l'utilisation du modèle async/await pour garantir l'exécution asynchrone des composants du noyau, excluant les principales classes de blocages mutuels. Tous les appels systèmes non triviaux sont réalisés sous forme de fonctions s'exécutant de manière asynchrone.
Fonctionnalités principales :
- Système de gestion de la mémoire avec prise en charge des pages mémoire en mode CoW (Copy-on-Write), tables de pages mémoire, fonctions asynchrones de copie de mémoire entre le noyau et l'espace utilisateur, et gestion des exceptions (page fault) côté noyau et espace utilisateur.
- Système de gestion des processus avec un ordonnanceur de tâches et prise en charge de la migration des tâches via les interruptions inter-processeurs (IPI). Prise en charge des forks de processus via l'appel clone(). Fonctionnalités de livraison de signaux aux processus et aux threads.
- Couche VFS (Virtual File System) fonctionnant de manière asynchrone, dispositif de bloc Ramdisk, pilote FAT32 et dispositif devtmpfs.
- Extraction de la fonctionnalité principale dans la bibliothèque libkernel, sans dépendance aux architectures matérielles.
- Couche d'abstraction matérielle (HAL) pour assurer le support du matériel.
- Ensemble de tests comprenant plus de 230 tests.
Parmi les principales limitations, on note l'absence de sous-système réseau et la présence d'un pilote de système de fichiers limité, ne prenant en charge le système de fichiers Fat32 qu'en mode lecture seule. Parmi les tâches prioritaires, on mentionne la poursuite de l'implémentation des appels système Linux, la création d'une pile TCP/IP, le soutien à l'équilibrage de charge dans l'ordonnanceur de tâches et la fourniture d'un pilote complet pour le système de fichiers (ext2/4).
Source : opennet.ru
