Efter 8 måneders udvikling blev den første prototype af Unix-lignende kernen Moss offentliggjort, som er delvist kompatibel med Linux. Koden er skrevet i Rust med assembler-indstik og distribueres under MIT-licensen. Projektet understøtter i øjeblikket kun Aarch64-arkitekturen, kan køre i QEMU og er blevet testet på Raspberry Pi 4, Jetson Nano, AMD Kria og imx8. Ifølge udviklerne kan kernen let porteres til andre arkitekturer som x86_64 og RISC-V, takket være et abstraheringslager for hardwareunderstøttelse.
I denne udviklingsfase er der implementeret 51 systemopkald fra Linux i Moss, og der er sikret binær kompatibilitet med Linux-applikationer, tilstrækkelig til at køre Bash-kommandolinjen og de fleste værktøjer fra BusyBox-sættet. Blandt karakteristikaene for Moss-arkitekturen bemærkes brugen af en async/await-model for at sikre asynkron eksekvering af kernen, som eliminerer hovedklasser af deadlocks. Alle ikke-trivielle systemopkald er implementeret som asynkront udførte funktioner.
Hovedfunktioner:
- Et hukommelsesstyringssystem med støtte til hukommelsessider i Copy-on-Write (CoW)-tilstand, hukommelsesside-tabeller, asynkrone funktioner til kopiering af hukommelse mellem kernen og brugerrummet samt håndtering af undtagelser (page fault) på kernen og brugerrummets side.
- Et processtyringssystem med en opgavestyrer og støtte til opgaver, der kan migrere via IPI (inter-processor interrupt). Understøttelse af processespredning via clone()-opkald. Muligheder for signaloverførsel til processer og tråde.
- Et asynkront arbejdslag VFS (Virtual File System), en Ramdisk blokhed, FAT32-driver og devtmpfs-enhed.
- Flytning af hovedfunktionaliteten til biblioteket libkernel, der ikke er bundet til hardwarearkitekturer.
- HAL-lag (Hardware Abstraction Layer) for at sikre hardwareunderstøttelse.
- Et testsæt, der inkluderer over 230 tests.
Blandt de væsentlige begrænsninger bemærkes fraværet af et netværkssystem og tilstedeværelsen af kun en beskåret filsystemdriver, der understøtter FAT32-filsystemet i skrivebeskyttet tilstand. Blandt de prioriterede opgaver nævnes fortsættelsen af implementeringen af Linux-systemopkald, oprettelsen af en TCP/IP-stak, støtte til belastningsbalancering i opgavestyreren og levering af en fuld driver til filsystemet (ext2/4).
Kilde: opennet.ru
