Bienvenue sur le site de SOS
Présentation
SOS, pour
Simple Operating System, est un noyau de
système d'exploitation (
OS) qui se veut simple à comprendre et qui couvre néanmoins les
concepts et fonctions des OS modernes. Le code de l'OS accompagne une série d'une dizaine d'articles parus dans la revue
Linux Magazine France entre 2004 et 2006. Chaque mois,
http://sos.enix.org propose le code de l'OS pour le mois en cours et les précédents.
SOS et les articles dans Linux Magazine France s'adressent aux personnes curieuses de connaître comment fonctionne un OS, pas spécialement aux "
pros" des OS. Ils visent à
apprendre par la pratique la structure et le fonctionnement interne des OS. Une telle compréhension en profondeur n'est pas simplement anecdotique : elle permet d'avoir une vision synthétique du fonctionnement de tout le système. Elle permet de mieux interpréter les comportements étranges, de mieux cibler les causes potentielles des erreurs qu'on est amené à rencontrer en travaillant sur la plupart des systèmes. Et, pour le programmeur de logiciels, elle permet d'avoir une vision assez juste des fonctionnalités disponibles sur un système quelconque, et d'avoir l'intuition de l'architecture et des mécanismes à implanter le plus élégamment et le plus efficacement possible pour réaliser les fonctions souhaitées.
--
David Decotigny & Thomas Petazzoni (2004, 2005, 2006, 2007)
Article en kiosque
- Octobre 2007 : Système de fichiers FAT, par Anthoine Bourgeois, un fidèle lecteur de la saga SOS !
Actualité autour de SOS
- Mai 2006 : ouverte d'une page listant des exercices amusants autour de SOS
- Mars 2006 : un patch pour que les processus aient un PID est disponible dans la page SOSPatches.
- Février 2006 : un patch pour passer des arguments et des variables d'environnement dans les nouveaux programmes est disponible dans la page SOSPatches.
- Janvier 2006 : Xavier Grave fait fonctionner des tâches Ada et les objets protégés dans Toy Lovelace, un noyau d'OS inspiré de SOS écrit en Ada !
- 6/6/2005 : Un certain nombre de bugs de l'article 7.5 (Mai 2005) a été corrigé. Une version remise à jour de cette version de SOS est disponible au téléchargement. Elle inclut les corrections de ces bugs ainsi que la contribution de C. Goyet permettant de charger SOS sans utiliser Grub.
- 17/12/2004 : Xavier Grave propose Toy Lovelace, un SOS réécrit en Ada95. Le noyau équivalent à celui décrit dans l'article 5 (11/2004) est implanté ! Xavier semble s'intéresser aussi au portage sur la plate-forme PowerPC.
- Articles à paraître
- épisode 10 : Systèmes de fichiers ext2 et FAT
- épisode 11 : Pilote de carte réseau PCI type NE2000, couches réseau ARP, ICMP, UDP
- épisode 12 : Swap (à confirmer...)
Articles déjà parus
- Linux Magazine de Février 2006 (épisode 9, 2ème volet)
Source disponible en téléchargement
- Couche générique de gestion des pilotes de périphériques bloc : blockdev
- Cache de blocs, cache de pages
- Gestion des partitions type PC, pilote de contrôleur IDE (pour qemu/bochs et machines PC pas trop exotiques)
- En démo : liste des partitions d'un disque dur, utilitaire dd, une série de tests
- Linux Magazine de Janvier 2006 (épisode 9, 1er volet)
Source disponible en téléchargement
- Couche générique de gestion des périphériques caractère : chardev
- Pilotes de périphériques caractère : /dev/mem, /dev/zero, tty, ligne série, clavier, écran
- En démo : un petit shell accessible via le clavier et la ligne série. Voir les indications sur la page des téléchargements
- Linux Magazine de Juillet/Août 2005 (épisode 8)
Source et article disponibles en téléchargement
- VFS : gestion de fichiers (open, read, write, link, symlink, unlink, mount, mmap, ...)
- En démo : environ 300 tests de ces fonctions sur un système de fichiers de démo (virtfs) dans userland/fstest.c
Le code se reportant à cet article n'est pas présent sur le CDROM du magazine : reportez-vous à la page "Téléchargements" du présent site. Vous y trouverez également quelques détails sur les "démos" du mois.
- Linux Magazine de Mai 2005 (épisode 7, deuxième volet)
Source et article disponibles en téléchargement
- Gestion de l'espace utilisateur : mmap/munmap/mprotect/mremap (mapping de "fichiers" + mappings anonymes), fork, exec, copy-on-write, malloc, partage de pages, /dev/zero, /dev/mem, /dev/kmem
- En démo : tests de fork, exec, mmap/mremap/munmap/mprotect, malloc, processus multithreadés
Le code se reportant à cet article n'est pas présent sur le CDROM du magazine : reportez-vous à la page "Téléchargements" du présent site. Vous y trouverez également quelques détails sur les "démos" du mois.
- Linux Magazine de Mars 2005 (épisode 7, premier volet)
Source et article disponibles en téléchargement
- Threads utilisateur, changement de privilège, appels système, espaces d'adressage séparés, notion de processus, chargeur ELF simplissime, premières applications utilisateur
- En démo : chargement de processus utilisateur multithreadés, premiers appels système, calcul de la charge CPU kernel/user
- Linux Magazine de Février 2005 (épisode 6, deuxième volet)
Source et article disponibles en téléchargement
- Threads noyau, synchronisation et ordonnancement (FIFO d'abord, puis O(1) pour la version définitive)
- En démo : plein de tests de synchronisation dont un fourni par un de nos lecteurs, Cyril Dupuit.
- Linux Magazine de Janvier 2005 (épisode 6, premier volet)
Source et article disponibles en téléchargement
- pile et changement de contexte
- en démo : "demand paging", backtrace, ping-pong à 2 programmes, évaluateur d'expressions arithmétiques entières "façon grand-mère"
Le code de cet article est absent du CD accompagnant l'article. Nous le rendons disponible sur la page des "telechargements".
Deux errata sont à apporter à cet article : voir la page des errata.
- Linux Magazine de Novembre 2004 (épisode 5)
Source et article disponibles en téléchargement
- Allocateur de mémoire virtuelle pour le noyau et premières considérations de récursivité
- en démo : calculs sur les grands nombres entiers
- Linux Magazine d'Octobre 2004 (épisode 4)
Source et article disponibles en téléchargement
- principes de la mémoire virtuelle, de la traduction d'adresses et de la pagination
- primitives de gestion de la pagination sur x86, notion d'identity-mapping et principe du mirroring
- en démo : déplacement au vol de la page de code en cours d'exécution
- Linux Magazine de Septembre 2004 (épisode 3)
Source et article disponibles en téléchargement
- gestion de la mémoire physique, notion de pages physiques
- compteurs de références et listes doublement chaînées circulaires
Le code de cet article est absent du CD accompagnant l'article. Nous le rendons disponible sur la page des "telechargements".
- Linux Magazine de Juillet/Août 2004 (épisode 2)
Source et article disponibles en téléchargement
- premières notions de traduction d'adresses
- détails sur la (re)mise en place de la segmentation sur x86
- mise en place du vecteur d'interruptions en mode protégé
- gestion des exceptions processeur et des interruptions matérielles
- Linux Magazine de Juin 2004 (épisode 1)
Source et article disponibles en téléchargement
- introdution, présentation, et objectifs de SOS
- quelques éléments d'architecture du PC
- code pour booter par Grub
- digression sur la phase de boot d'un PC, secteur de boot simple
- "driver" video en mode texte du PC, sortie de debuggage sur le port 0xe9 de bochs
- une annexe sur les formats de fichiers objets, les scripts ld, et les étapes post-compilation
(2007-11-21)
SOSDownload . . . .
ThomasPetazzoni
(2007-09-29)
PagePrincipale . . . .
DavidDecotigny
(2007-08-31)
SOSExercices . . . .
ThomasPetazzoni
(2007-08-31)
ThomasPetazzoni . . . .
ThomasPetazzoni
(2007-01-08)
SOSRelated . . . .
ThomasPetazzoni
(2006-05-30)
MenuNavigation . . . .
ThomasPetazzoni
(2006-03-19)
SOSPatches . . . .
DavidDecotigny
(Voir
DerniersChangements pour avoir une liste plus complète)