L'objectif principal de Mimiker est de fournir un système d'exploitation minimal de type UNIX, c'est-à-dire le noyau et un ensemble de programmes d'espace utilisateur.
La conception du noyau est fortement inspirée par les systèmes FreeBSD et NetBSD avec quelques idées prises à partir de Linux, Plan9 et d'autres OSE. Nous passons beaucoup de temps à lire le code source des systèmes d'exploitation open source. Nous choisissons soigneusement leurs meilleures décisions de conception, idées, algorithmes, API, pratiques, etc., les distiller au strict minimum et les réimplémentez ou s'adaptons à la base de code de Mimiker. Nous espérons ne pas répéter leurs erreurs et nous éloigner des solutions héritées et non parfaites.
Mimiker Project rassemble des personnes qui apprécient le minimalisme, la simplicité et la lisibilité du code. Nous recherchons la complexité des solutions la plus faible possible. Nous aimons jeter du code qui n'est pas terriblement utile ou gère les cas de bord rare. Nous connaissons la valeur de la débogueté et nous n'hésitons pas à passer du temps à écrire des outils qui aident à l'améliorer.
Bien que les programmes d'espace d'utilisateur fassent partie du projet Mimiker, ils ont simplement porté à partir de NetBSD ou de projet Suckless. Nous nous concentrons sur le développement du noyau, car nous le trouvons plus intéressant. Nous ne voulons pas investir trop de temps dans les pilotes de l'appareil, nous gardons donc une liste de plates-formes cibles petites.
Si vous souhaitez vous impliquer dans le projet, veuillez lire notre wiki pour en savoir plus!
Mimiker est un système d'exploitation en temps réel. Le noyau est préemptable et nos mutex soutiennent l'héritage de la priorité. Nous minimisons le travail effectué dans un contexte d'interruption en le déléguant pour interrompre les threads au lieu de l'exécuter en utilisant des interruptions douces.
Mimiker s'exécute sur des architectures MIPS (32 bits), Aarch64 et RISC-V (32 bits et 64 bits) sous Contrôle Qemu et Renode.
Mimiker a un bel ensemble d'outils de débogage: scripts gdb écrits en python, désinfectant d'adresse du noyau, validateur de dépendance de verrouillage, désinfectant de concurrence du noyau. Nous avons même un soutien au profilage du noyau en utilisant gprof ! Nous utilisons Clang pour compiler notre base de code, nous pouvons donc utiliser des algorithmes d'analyse dynamique et statique sophistiqués pour faciliter la fiabilité du code.
Un ensemble commun de primitives de synchronisation est fourni, c'est-à-dire des verrouillage de spin, des mutex et des variables conditionnelles - le tout avec une sémantique simple. Nous n'avons pas plusieurs primitives qui font des choses similaires, mais un peu différemment, ce qui est courant pour les grains FreeBSD ou Linux.
La mémoire du noyau de Mimiker est câblée (c'est-à-dire non swappable), vous n'avez donc pas à vous soucier de choisir les bonnes verrous lors de l'accès à la mémoire du noyau, contrairement à FreeBSD. Nous avons un allocateur de mémoire Buddy pour la mémoire physique, l'allocateur d'espace d'adresse virtuel et l'allocateur de dalles basé sur des magazines et du papier VMEM. Nos allocateurs de mémoire sont simples mais efficaces.
L'infrastructure de pilote de Mimiker résume le concept à l'extérieur du registre matériel et interrompt de manière similaire au NewBus de FreeBSD. Des soins spéciaux sont pris en charge pour rendre les conducteurs portables. Nous avons des routines d'énumérateur qui sont des périphériques automatiquement attachés aux bus PCI et USB. Nous utilisons une arborescence d'appareil plat pour conduire la configuration du noyau pendant la phase de démarrage.
Le système de fichiers virtuel et la gestion de l'espace d'adressage virtuel virtuel sont largement basés sur des idées FreeBSD. Ils ont besoin d'un travail substantiel pour devenir aussi mature que dans les grains FreeBSD ou Linux.
Nous avons plus de quatre-vingts systèmes qui nous permettent d'exécuter divers outils open source, notamment Korn Shell de NetBSD, Atto Emacs Editor, Lua Interpreter et bien d'autres. Nous avons même un jeu:
Supports de Mimiker:
Nous aimerions soutenir:
Il y a beaucoup de travail à faire. Veuillez vous référer à notre feuille de route!