Das Hauptziel von Mimiker ist es, ein minimales Unix-ähnliches Betriebssystem, dh der Kernel und eine Reihe von Userspace-Programmen zu liefern.
Das Kernel -Design ist stark von FreeBSD- und NetBSD -Systemen inspiriert, wobei einige Ideen aus Linux, Plan9 und anderen Osen entnommen wurden. Wir verbringen viel Zeit damit, den Quellcode von Open-Source-Betriebssystemen zu lesen. Wir wählen sorgfältig ihre besten Entwurfsentscheidungen, Ideen, Algorithmen, APIs, Praktiken usw. aus, destillieren sie, um sie zu mindestens minimal zu machen und sie neu einzubeziehen oder sich an die Mimiker -Codebasis anzupassen. Wir hoffen, ihre Fehler nicht zu wiederholen und sich von Legacy- und nicht perfekten Lösungen zu entfernen.
Das Mimiker -Projekt versammelt wie gesinnte Menschen, die den Minimalismus, die Einfachheit und die Lesbarkeit von Code schätzen. Wir streben nach der niedrigstmöglichen Komplexität von Lösungen. Wir lieben es, Code wegzuwerfen, der nicht besonders nützlich ist oder seltene Randfälle behandelt. Wir kennen den Wert der Debuggabilität und zögern nicht, Zeit mit dem Schreiben von Tools zu verbringen, die dazu beitragen, dies zu verbessern.
Obwohl Benutzerspace -Programme Teil des Mimiker -Projekts sind, haben sie einfach aus NetBSD oder Sauglosenprojekt portiert. Wir konzentrieren uns auf die Kernelentwicklung, da wir es interessanter finden. Wir möchten nicht zu viel Zeit in die Gerätetreiber investieren, daher halten wir eine Liste der Zielplattformen klein.
Wenn Sie sich in das Projekt einlassen möchten, lesen Sie bitte unser Wiki, um mehr herauszufinden!
Mimiker ist ein Echtzeit-Betriebssystem. Der Kernel ist präventiv und unsere Mutexes unterstützen die Prioritätsvererbung. Wir minimieren die Arbeit im Interrupt -Kontext, indem wir sie delegieren, um Threads zu unterbrechen, anstatt sie mit Soft -Interrupts auszuführen.
Mimiker läuft mit MIPS (32-Bit), AArch64 und RISC-V (sowohl 32-Bit- als auch 64-Bit) -Architekturen unter QEMU und Renodekontrolle.
Mimiker verfügt über eine schöne Reihe von Debugging -Tools: gdb -Skripte, die in Python, Kerneladinsitizer, Sperrenabhängigkeits -Validator, Kernel -Concurrency -Desinfektionsmittel geschrieben wurden. Wir haben sogar Unterstützung für die Profilierung des Kernels mit gprof ! Wir verwenden Clang, um unsere Codebasis zu kompilieren. Daher können wir ausgefeilte dynamische und statische Analysealgorithmen verwenden, um die Zuverlässigkeit der Code zu unterstützen.
Ein häufiger Satz von Synchronisationsprimitiven wird bereitgestellt, dh Spin -Locks, Mutexes und bedingte Variablen - alle mit einfacher Semantik. Wir haben nicht mehrere Primitive, die ähnliche Dinge tun, aber ein bisschen anders, was für FreeBSD- oder Linux -Kernel üblich ist.
Der Kernel-Speicher von Mimiker ist verdrahtet (dh nicht abgeschaltbar), sodass Sie sich beim Zugriff auf den Kernel-Speicher keine Sorgen machen müssen, wie es in FreeBSD zugreift. Wir haben Buddy Memory Allocator für physischen Speicher, Virtual Address Space Allocator und Plattenallocator basierend auf Magazinen und VMEM -Papier. Unsere Speicherallocatoren sind einfach und doch effizient.
Mimiker's Triver Infrastructure ist das Konzept des Hardwareregisters ab und unterbricht auf ähnliche Weise mit dem Neuling von FreeBSD. Besonderes Sorgfalt wird darauf geachtet, die Fahrer tragbar zu machen. Wir haben Enumerator -Routinen, mit denen die an PCI- und USB -Busse angeschlossenen Geräte für Autodetekten automatisch sind. Wir verwenden flacher Gerätebaum, um die Kernelkonfiguration während der Startphase zu treiben.
Das virtuelle Dateisystem und die Benutzer des virtuellen Adressraums der virtuellen Adressraum basieren lose auf FreeBSD -Ideen. Sie brauchen eine sägliche Arbeit, um so reif zu werden wie in FreeBSD- oder Linux -Kerneln.
Wir haben über achtzig Syscalls, mit denen wir verschiedene Open-Source-Tools ausführen können, darunter NetBSDs Korn Shell, Atto EMACS-Redakteur, Lua Interpreter und viele mehr. Wir haben sogar ein Spiel:
Mimiker unterstützt:
Wir möchten unterstützen:
Es gibt viel zu tun. Bitte beachten Sie unsere Roadmap!