Caractéristiques de SOS
- Architecture cible : monoprocesseur Intel 80386 ou supérieur, type PC, non pas par élégance technique, mais parce que cette architecture est sans doute la plus répandue.
- Machine hôte pour la compilation : toute machine de type Unix disposant de la suite gcc (Linux, Solaris, Cygwin dans Windows, ...). SOS est écrit en C et en assembleur. Une version en Ada95 est disponible aussi.
- Pour tester SOS : exécution sur machine cible de type PC réelle. Ou simulation par bochs ou qemu sur toutes architectures
- Chargement par un chargeur de boot compatible avec le standard multiboot (Grub pour le moment), ou par un secteur de boot fourni si le noyau à charger fait moins de 632ko non compressé
- Noyau de type monolithique, interruptible, non préemptible
- Ordonnancement multitâche préemptif, système mono-utilisateur
- Gestion des interruptions matérielles (PIC i8259, pas d'APIC), logicielles, et des exceptions processeur, gestion des ports d'I/O x86
- Séparation des notions d'adresses physiques et d'adresses noyau
- Allocateur dans la zone noyau ségrégationniste de type slab
- Système de fichiers : VFS (Virtual File System) type Unix. Caractéristiques principales : séparation des notions d'espace de nommage et des ressources fichiers, fichiers spéciaux, liens hard/symboliques, points de montage
- Périphériques : clavier, zone vidéo du PC, port série (UART 16550), disques IDE de bochs/qemu (et des PC pas trop exotiques), NE2000 PCI et ISA
- Autres pilotes : partitions PC, système de fichiers FAT et ext2, pile réseau simplissime
- Support des applications utilisateur : programmes au format ELF32, sans bibliothèques partagées, notion de processus et de threads, libC minimale avec read(), write(), etc... et exec(), fork(), mmap().
- Peut-être un swap (à confirmer...), pas de reverse mapping
Ces caractéristiques risquent d'évoluer au fil des articles, mais dans le sens de leur amélioration.