Na acht maanden ontwikkeling is de eerste prototype van de Unix-achtige kernel Moss gepubliceerd, die gedeeltelijk compatibel is met Linux. De code is geschreven in Rust met assemblertalen en wordt verspreid onder de MIT-licentie. Momenteel ondersteunt het project alleen de Aarch64-architectuur, kan het draaien in QEMU en is het getest op Raspberry Pi 4, Jetson Nano, AMD Kria en imx8. Volgens de ontwikkelaars kan de kernel gemakkelijk worden gepoort naar andere architecturen zoals x86_64 en RISC-V, dankzij een abstractielaag voor hardwareondersteuning.
In deze ontwikkelingsfase heeft Moss 51 systeemaanroepen van Linux geĆÆmplementeerd en wordt binaire compatibiliteit met Linux-applicaties geboden, voldoende voor het draaien van de Bash-commandoregel en de meeste hulpprogramma's uit de BusyBox-set. Een kenmerk van de architectuur van Moss is het gebruik van het async/await-model voor het waarborgen van asynchrone uitvoering van kernelcomponenten, waardoor belangrijke klassen van deadlocks worden uitgesloten. Alle niet-triviale systeemaanroepen zijn geĆÆmplementeerd in de vorm van asynchroon uitgevoerde functies.
Belangrijkste mogelijkheden:
- Een geheugentoewijsysteem met ondersteuning voor pagina's in Copy-on-Write (CoW) modus, paginatabellen, asynchrone geheugenoverdracht tussen de kernel en de gebruikersruimte, en uitzonderingafhandeling (page fault) aan zowel de kernel- als gebruikerszijde.
- Een procesbeheersysteem met een taakplanner en ondersteuning voor taakoverdracht via inter-processor interrupts (IPI). Ondersteuning voor het fork van processen via de clone()-aanroep. Mogelijkheden voor het verzenden van signalen naar processen en threads.
- Een asynchroon werkend VFS (Virtual File System) laag, een Ramdisk-blokapparaat, een FAT32-stuurprogramma en een devtmpfs-apparaat.
- De kernfunctionaliteit is in de libkernel-bibliotheek geplaatst, die niet gebonden is aan hardwarearchitecturen.
- Een HAL-laag (Hardware Abstraction Layer) voor hardwareondersteuning.
- Een testset die meer dan 230 tests bevat.
Een van de significante beperkingen is het ontbreken van een netwerksubsyteem en het bestaande beperkte stuurprogramma voor het bestandssysteem, dat alleen FAT32 in alleen-lezen modus ondersteunt. Onder de prioritaire taken staat het vervolg van de implementatie van Linux-systeemaanroepen, de creatie van een TCP/IP-stack, ondersteuning voor load balancing in de taakplanner en het bieden van een volwaardig stuurprogramma voor het bestandssysteem (ext2/4).
Bron: opennet.ru
