Po 8 miesiącach prac nad rozwojem opublikowano pierwszy prototyp jądra podobnego do Unix, Moss, częściowo zgodnego z Linuxem. Kod napisany jest w języku Rust z wstawkami assemblerowymi i jest rozpowszechniany na licencji MIT. Obecnie projekt wspiera tylko architekturę Aarch64, można go uruchamiać w QEMU, a testowano go na płytach Raspberry Pi 4, Jetson Nano, AMD Kria i imx8. Według twórców jądro może być łatwo przeniesione na inne architektury, takie jak x86_64 i RISC-V, dzięki warstwie do abstrakcji wsparcia sprzętowego.
Na tym etapie rozwoju w Moss zaimplementowano 51 wywołań systemowych Linux i zapewniono binarną zgodność z aplikacjami dla Linuxa, wystarczającą do uruchomienia powłoki Bash i większości narzędzi z zestawu BusyBox. Wśród cech architektury Moss wyróżnia się wykorzystanie modelu async/await dla zapewnienia asynchronicznego wykonania komponentów jądra, co wyklucza główne klasy wzajemnych blokad. W formie asynchronicznie wykonywanych funkcji zostały zaimplementowane wszystkie nietrywialne wywołania systemowe.
Podstawowe funkcje:
- System zarządzania pamięcią z wsparciem dla stron pamięci w trybie CoW (Copy-on-Write), tabel stron pamięci, asynchronicznych funkcji kopiowania pamięci między jądrem a przestrzenią użytkownika, obsługi wyjątków (page fault) po stronie jądra i przestrzeni użytkownika.
- System zarządzania procesami z harmonogramem zadań i wsparciem dla migracji zadań przez IPI (inter-processor interrupt). Wsparcie dla tworzenia procesów za pomocą wywołania clone(). Możliwości dostarczania sygnałów do procesów i wątków.
- Asynchronicznie działająca warstwa VFS (Virtual File System), urządzenie blokowe Ramdisk, sterownik FAT32 oraz urządzenie devtmpfs.
- Ekstrakcja podstawowej funkcjonalności do biblioteki libkernel, niezwiązanej z architekturami sprzętowymi.
- Warstwa HAL (Hardware Abstraction Layer) dla zapewnienia wsparcia sprzętowego.
- Zestaw testów składający się z ponad 230 testów.
Wśród istotnych ograniczeń wymienia się brak systemu sieciowego oraz obecność jedynie okrojonego sterownika systemu plików, wspierającego system plików Fat32 w trybie tylko do odczytu. Wśród priorytetowych zadań wymieniono kontynuację realizacji wywołań systemowych Linux, stworzenie stosu TCP/IP, wsparcie dla równoważenia obciążenia w harmonogramie zadań oraz zapewnienie pełnowartościowego sterownika systemu plików (ext2/4).
Źródło: opennet.ru
