Nach 8 Monaten Entwicklung wurde der erste Prototyp des Unix-Ă€hnlichen Kernels Moss veröffentlicht, der teilweise mit Linux kompatibel ist. Der Code ist in Rust mit Assembly-EinfĂŒgungen geschrieben und steht unter der MIT-Lizenz. Derzeit unterstĂŒtzt das Projekt nur die Aarch64-Architektur, kann in QEMU gestartet werden und wurde auf Raspberry Pi 4, Jetson Nano, AMD Kria und imx8 getestet. Laut den Entwicklern kann der Kernel leicht auf andere Architekturen wie x86_64 und RISC-V portiert werden, dank einer Schicht zur Abstraktion der HardwareunterstĂŒtzung.
In dieser Entwicklungsphase implementiert Moss 51 Linux-Systemaufrufe und gewĂ€hrleistet binĂ€re KompatibilitĂ€t mit Linux-Anwendungen, die ausreichend ist, um die Bash-Befehlszeile und die meisten Utilities aus dem BusyBox-Paket auszufĂŒhren. Zu den Besonderheiten der Moss-Architektur gehört die Verwendung des async/await-Modells, um die asynchrone AusfĂŒhrung von Kernelkomponenten zu gewĂ€hrleisten und grundlegende Klassen von Deadlocks auszuschlieĂen. Alle nicht-trivialen Systemaufrufe sind als asynchron ausgefĂŒhrte Funktionen implementiert.
Hauptfunktionen:
- Ein Speichermanagementsystem mit UnterstĂŒtzung fĂŒr Memory Pages im CoW-Modus (Copy-on-Write), Speicherseitentabellen, asynchronen Funktionen zum Kopieren von Speicher zwischen Kernel und Benutzerraum sowie der Verarbeitung von Ausnahmen (Page Faults) im Kernel- und Benutzerbereich.
- Ein Prozessverwaltungssystem mit einem Task-Scheduler und UnterstĂŒtzung fĂŒr die Migration von Aufgaben ĂŒber IPI (inter-processor interrupt). UnterstĂŒtzung fĂŒr die Ableitung von Prozessen ĂŒber den clone()-Aufruf. Möglichkeiten zur Zustellung von Signalen an Prozesse und Threads.
- Ein asynchron arbeitendes VFS (Virtual File System), ein Ramdisk-BlockgerÀt, ein FAT32-Treiber und das devtmpfs-GerÀt.
- Ăbertragung der HauptfunktionalitĂ€t in eine Hardware-unabhĂ€ngige Bibliothek libkernel.
- HAL-Schicht (Hardware Abstraction Layer) zur UnterstĂŒtzung der Hardware.
- Ein Testset, das mehr als 230 Tests umfasst.
Zu den wesentlichen EinschrĂ€nkungen gehören das Fehlen eines NetzwerkunterstĂŒtzungssystems und die Existenz eines stark reduzierten Dateisystemtreibers, der nur das FAT32-Dateisystem im nur-lesbaren Modus unterstĂŒtzt. Zu den PrioritĂ€ten gehören die Fortsetzung der Implementierung von Linux-Systemaufrufen, die Erstellung eines TCP/IP-Stacks, die UnterstĂŒtzung der Lastverteilung im Task-Scheduler und die Bereitstellung eines vollstĂ€ndigen Treibers fĂŒr das Dateisystem (ext2/4).
Quelle: opennet.ru
