Po 8 mesiacoch vývoja bol zverejnený prvý prototyp Unix-podobného jadra Moss, čiastočne kompatibilného s Linuxom. Kód je napísaný v jazyku Rust s assemblerovými vložkami a šíri sa pod licenciou MIT. V súčasnosti projekt podporuje iba architektúru Aarch64, môže sa spúšťať v QEMU a bol otestovaný na doskách Raspberry Pi 4, Jetson Nano, AMD Kria a imx8. Podľa tvrdení vývojárov je jadro ľahko prenositeľné na iné architektúry, ako sú x86_64 a RISC-V, vďaka vrstve na abstrahovanie podpory hardvéru.
V tejto fáze vývoja implementoval Moss 51 systémových volaní Linuxu a zabezpečil binárnu kompatibilitu s aplikáciami pre Linux, dostatočnú na spúšťanie príkazového shellu Bash a väčšiny utilít zo sady BusyBox. Medzi charakteristiky architektúry Moss patrí použitie modelu async/await na zabezpečenie asynchrónneho vykonávania komponentov jadra, čím sa vylučujú hlavné triedy vzájomných blokovaní. V podobe asynchrónne vykonávaných funkcií sú implementované všetky netriviálne systémové volania.
Hlavné možnosti:
- Systém správy pamäte s podporou strán pamäte v režime CoW (Copy-on-Write), tabuliek strán pamäte, asynchrónnych funkcií kopírovania pamäte medzi jadrom a priestorom používateľa, spracovania výnimiek (page fault) na strane jadra a priestore používateľa.
- Systém správy procesov s plánovačom úloh a podporou migrácie úloh cez IPI (inter-processor interrupt). Podpora vetvenia procesov cez volanie clone(). Možnosti na doručovanie signálov procesom a vláknam.
- Asynchrónne pracujúca vrstva VFS (Virtual File System), blokové zariadenie Ramdisk, ovládač FAT32 a zariadenie devtmpfs.
- Presun hlavnej funkčnosti do knižnice libkernel, ktorá nie je viazaná na hardvérové architektúry.
- HAL-vrstva (Hardware Abstraction Layer) na zabezpečenie podpory hardvéru.
- Testovací balík, ktorý obsahuje viac ako 230 testov.
Medzi výrazné obmedzenia patrí absencia sieťového subsystému a existenciu len okúsenej súčasti ovládača súborového systému, podporujúcej súborový systém Fat32 v režime iba na čítanie. Medzi prioritné úlohy patrí pokračovanie v implementácii systémových volaní Linuxu, vytvorenie TCP/IP zásobníka, podpora vyváženia záťaže v plánovači úloh a poskytnutie plnohodnotného ovládača pre súborový systém (ext2/4).
Zdroj: opennet.ru
