Después de 8 meses de desarrollo, se ha publicado el primer prototipo del núcleo similar a Unix llamado Moss, compatible en parte con Linux. El código está escrito en Rust con inserciones en ensamblador y se distribuye bajo la licencia MIT. Actualmente, el proyecto solo soporta la arquitectura Aarch64, puede ejecutarse en QEMU y ha sido probado en placas Raspberry Pi 4, Jetson Nano, AMD Kria e imx8. Según los desarrolladores, el núcleo puede ser fácilmente portado a otras arquitecturas como x86_64 y RISC-V, gracias a una capa de abstracción para el soporte de hardware.
En esta etapa del desarrollo, Moss implementa 51 llamadas al sistema de Linux y proporciona compatibilidad binaria suficiente con aplicaciones de Linux para ejecutar el shell Bash y la mayoría de utilidades del conjunto BusyBox. Entre las características de la arquitectura Moss, se destaca el uso del modelo async/await para asegurar la ejecución asíncrona de los componentes del núcleo, lo que elimina las principales clases de bloqueos mutuos. Todas las llamadas al sistema no triviales están implementadas como funciones que se ejecutan de manera asíncrona.
Principales características:
- Sistema de gestión de memoria con soporte para páginas de memoria en modo CoW (Copy-on-Write), tablas de páginas de memoria, funciones asíncronas para la copia de memoria entre el núcleo y el espacio del usuario, y el manejo de excepciones (page fault) tanto en el núcleo como en el espacio del usuario.
- Sistema de gestión de procesos con un planificador de tareas y soporte para la migración de tareas a través de IPI (inter-processor interrupt). Soporte para la bifurcación de procesos a través de la llamada clone(). Capacidades para la entrega de señales a procesos e hilos.
- Capa VFS (Virtual File System) que trabaja de manera asíncrona, dispositivo de bloques Ramdisk, controlador FAT32 y dispositivo devtmpfs.
- Extracción de la funcionalidad principal a una biblioteca libkernel, no vinculada a arquitecturas de hardware específicas.
- Capa HAL (Hardware Abstraction Layer) para proporcionar soporte de hardware.
- Conjunto de pruebas que incluye más de 230 tests.
Entre las limitaciones significativas se destaca la ausencia de una subsistema de red y la inclusión de un controlador de sistema de archivos limitado que solo soporta el sistema de archivos Fat32 en modo de solo lectura. Entre las tareas prioritarias se mencionan la continuación de la implementación de llamadas al sistema de Linux, la creación de un stack TCP/IP, el soporte para la balanceo de carga en el planificador de tareas y la provisión de un controlador completo para el sistema de archivos (ext2/4).
Fuente: opennet.ru
