Po 8 mesecih razvoja je objavljen prvi prototip Unix-slike jedra Moss, delno združljivega z Linuxom. Koda je napisana v jeziku Rust z vstavki assembly in je na voljo pod MIT licenco. Trenutno projekt podpira samo arhitekturo Aarch64, lahko se zažene v QEMU in je testiran na ploščah Raspberry Pi 4, Jetson Nano, AMD Kria in imx8. Po trditvah razvijalcev je jedro lahko enostavno prenosljivo na druge arhitekture, kot so x86_64 in RISC-V, zahvaljujoč sloju za abstrakcijo podpore strojni opremi.
Na tej stopnji razvoja je v Mossu implementiranih 51 sistemski klic Linuxa in zagotovljena binarna združljivost z aplikacijami za Linux, dovolj za zagon ukazne lupine Bash in večine pripomočkov iz kompleta BusyBox. Med značilnostmi arhitekture Moss je izpostavljena uporaba modela async/await za zagotavljanje asinhronih komponent jedra, ki izključuje glavne vrste mrtvih blokad. V obliki asinhrono delujočih funkcij so implementirani vsi netrivialni sistemski klici.
Glavne značilnosti:
- Sistem za upravljanje pomnilnika s podporo za pomnilniške strani v načinu CoW (Copy-on-Write), tabelami strani pomnilnika, asinhronimi funkcijami kopiranja pomnilnika med jedrom in uporabniškim prostorom, ter obdelavo izjem (page fault) na strani jedra in uporabniškega prostora.
- Sistem za upravljanje procesov s planiranjem opravil in podporo za migracijo opravil preko IPI (inter-processor interrupt). Podpora za ustvarjanje novih procesov preko klica clone(). Možnosti za dostavo signalov procesom in niti.
- Asinhrono delujoča plast VFS (Virtual File System), blok naprave Ramdisk, gonilnik FAT32 in naprava devtmpfs.
- Izvajanje osnovne funkcionalnosti v knjižnici libkernel, ki ni vezana na strojne arhitekture.
- HAL-sloj (Hardware Abstraction Layer) za zagotavljanje podpore strojni opremi.
- Testni sklop, ki vključuje več kot 230 testov.
Med pomembnimi omejitvami je opazna odsotnost omrežne podsistem in le zmanjšan gonilnik datotečnega sistema, ki podpira datotečni sistem Fat32 v načinu samo za branje. Med prednostnimi nalogami je omenjeno nadaljevanje izvajanja sistemskih klicev Linux, ustvarjanje TCP/IP sklada, podpora za uravnoteženje obremenitev v planirniku opravil in zagotavljanje polnega gonilnika za datotečni sistem (ext2/4).
Izvor: opennet.ru
