Po 8 měsících vývoje byl zveřejněn první prototyp unixového jádra Moss, které je částečně kompatibilní s Linuxem. Kód je napsán v jazyce Rust s assemblerovými vložkami a je distribuován pod licencí MIT. V současnosti projekt podporuje pouze architekturu Aarch64, může být spuštěn v QEMU a byl testován na deskách Raspberry Pi 4, Jetson Nano, AMD Kria a imx8. Podle tvrzení vývojářů lze jádro snadno portovat pro jiné architektury, jako jsou x86_64 a RISC-V, díky vrstvě pro abstrakci hardwarové podpory.
V této fázi vývoje implementoval Moss 51 systémových volání Unix/Linux a zajistil binární kompatibilitu s aplikacemi pro Linux, která je dostatečná pro spuštění příkazového shellu Bash a většiny utilit souborového balíku BusyBox. Mezi zvláštnosti architektury Moss patří použití modelu async/await pro zajištění asynchronního vykonávání komponentů jádra, což vylučuje hlavní třídy vzájemných blokací. Všechny netriviální systémové volání jsou realizovány ve formě asynchronně vykonávaných funkcí.
Hlavní funkce:
- Systém správy paměti s podporou stránek paměti v režimu CoW (Copy-on-Write), tabulek stránek paměti, asynchronních funkcí kopírování paměti mezi jádrem a prostorem uživatele, zpracování výjimek (page fault) na straně jádra a prostoru uživatele.
- Systém správy procesů s plánovačem úloh a podporou migrace úloh prostřednictvím IPI (inter-processor interrupt). Podpora odvětvování procesů prostřednictvím volání clone(). Možnosti pro doručování signálů procesům a vláknům.
- Asynchronně pracující vrstva VFS (Virtual File System), blokové zařízení Ramdisk, ovladač FAT32 a zařízení devtmpfs.
- Oddělení hlavních funkcí do knihovny libkernel, která není vázaná na hardwarové architektury.
- HAL vrstva (Hardware Abstraction Layer) pro zajištění podpory hardwaru.
- Testovací sada zahrnující více než 230 testů.
Mezi hlavními omezeními se vyzdvihuje absence síťového subsystému a pouze zjednodušený ovladač souborového systému, který podporuje souborový systém Fat32 v režimu pouze pro čtení. Mezi priority se uvádí pokračování implementace systémových volání Linuxu, vytvoření TCP/IP zásobníku, podpora vyvažování zátěže v plánovači úloh a poskytování plnohodnotného ovladače pro souborový systém (ext2/4).
Zdroj: opennet.ru
