След 8 месеца разработка, публикуван е първият прототип на Unix-подобно ядро Moss, частично съвместимо с Linux. Кодът е написан на езика Rust с асемблерни вмъквания и се разпространява под лиценза MIT. В момента проектът поддържа само архитектура Aarch64, може да се стартира в QEMU и е тестван на платки Raspberry Pi 4, Jetson Nano, AMD Kria и imx8. Според разработчиците, ядро може лесно да бъде портировано за други архитектури, като x86_64 и RISC-V, благодарение на прослойка за абстрахиране на поддръжката на оборудването.
На този етап от разработката в Moss са реализирани 51 системен повикване на Linux и е осигурена бинарна съвместимост с приложения за Linux, достатъчна за стартиране на командния интерпретатор Bash и повечето утилити от набора BusyBox. Между характерните особености на архитектурата Moss е употребата на модела async/await за осигуряване на асинхронно изпълнение на компонентите на ядрото, което изключва основните класове взаимни блокировки. Във форма на асинхронно изпълнявани функции са реализирани всички нетривиални системни повиквания.
Основни възможности:
- Система за управление на паметта с поддръжка на страници памет в режим CoW (Copy-on-Write), таблици на страниците на паметта, асинхронни функции за копиране на памет между ядрото и пространството на потребителя, обработка на изключения (page fault) отстрана на ядрото и пространството на потребителя.
- Система за управление на процесите с планировчик на задачи и поддръжка за миграция на задачи чрез IPI (inter-processor interrupt). Подкрепа за разклоняване на процеси чрез повикване на clone(). Възможности за доставка на сигнали на процеси и нишки.
- Асинхронно работещ слой VFS (Virtual File System), блочно устройство Ramdisk, драйвер FAT32 и устройство devtmpfs.
- Изнасяне на основната функционалност в библиотека libkernel, некореспондираща спрямо хардуерни архитектури.
- HAL-прослойка (Hardware Abstraction Layer) за осигуряване на поддръжка на оборудването.
- Тестов набор, включващ над 230 теста.
От съществени ограничения, се отбелязва отсъствието на мрежова подсистема и наличието само на ореден драйвер на файловата система, подкрепящ ФС Fat32 в режим само за четене. Сред приоритетните задачи е споменато продължаването на реализирането на системни повиквания на Linux, създаването на TCP/IP стек, поддръжка за балансировка на натоварването в планировчика на задачи и предоставяне на пълноценен драйвер за файловата система (ext2/4).
Източник: opennet.ru
