După 8 luni de dezvoltare, a fost publicat primul prototip al nucleului similar Unix Moss, parțial compatibil cu Linux. Codul este scris în limbajul Rust cu inserturi de asamblare și este distribuit sub licența MIT. În prezent, proiectul suportă doar arhitectura Aarch64, poate fi rulat în QEMU și a fost testat pe plăci Raspberry Pi 4, Jetson Nano, AMD Kria și imx8. Potrivit dezvoltatorilor, nucleul poate fi portat cu ușurință pe alte arhitecturi, cum ar fi x86_64 și RISC-V, datorită unui strat de abstractizare a suportului hardware.
În această etapă de dezvoltare, Moss implementează 51 de apeluri de sistem Linux și asigură compatibilitatea binară cu aplicațiile Linux, suficientă pentru a rula shell-ul Bash și majoritatea utilitarelor din setul BusyBox. Printre caracteristicile arhitecturii Moss se remarcă utilizarea modelului async/await pentru a asigura execuția asincronă a componentelor nucleului, excluzând principalele clase de blocaje reciproce. Toate apelurile de sistem netriviale sunt implementate sub formă de funcții executate asincron.
Funcționalități principale:
- Sistemul de gestionare a memoriei cu suport pentru paginile de memorie în modul CoW (Copy-on-Write), tabelele de pagini de memorie, funcții asincrone de copiere a memoriei între nucleu și spațiul utilizatorului, precum și gestionarea excepțiilor (page fault) atât pe partea nucleului, cât și pe cea a spațiului utilizatorului.
- Sistemul de gestionare a proceselor cu un planificator de sarcini și suport pentru migrarea sarcinilor prin IPI (inter-processor interrupt). Suport pentru ramificarea proceselor prin apelul clone(). Capacități de livrare a semnalelor către procese și fire.
- Un strat VFS (Virtual File System) care funcționează asincron, unitate bloc Ramdisk, driver FAT32 și dispozitiv devtmpfs.
- Externalizarea funcționalității principale într-o bibliotecă libkernel, nelegată de arhitecturile hardware.
- Stratul HAL (Hardware Abstraction Layer) pentru a asigura suportul hardware.
- Suită de teste care include peste 230 de teste.
Printre limitările semnificative se numără absența subsystem-ului de rețea și existența doar a unui driver limitat pentru sistemul de fișiere, care suportă FS Fat32 în modul de citire doar. Printre sarcinile prioritare se menționează continuarea implementării apelurilor de sistem Linux, crearea stivei TCP/IP, suportul pentru echilibrarea sarcinilor în planificatorul de sarcini și furnizarea unui driver complet pentru sistemul de fișiere (ext2/4).
Sursa: opennet.ro
