Bienvenue sur le site de SOS
Présentation
Le numéro de Linux Magazine contenant le premier article de la série SOS, publié en juin 2004 SOS, pour
Simple Operating System, est un noyau de
http://fr.wikipedia.org/wiki/Syst%C3%A8me_D%27exploitation (
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, 2009)
Actualité autour de SOS
- Mai 2009 : reprise du travail sur le code et prochainement les articles par David Decotigny et Thomas Petazzoni, afin de terminer les deux derniers articles prévus, sur le système de fichiers ext2 d'une part et sur l'implémentation d'une petite pile réseau d'autre part
- Octobre 2007 : publication d'un article sur l'implémentation du système de fichiers FAT dans SOS par Anthoine Bourgeois
- 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 SOSDownload. 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
- http://ed-diamond.com/produit.php?produit=418 (épisode 9, 2ème volet)
Source disponible en SOSDownload
- 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 SOSDownload
- 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 SOSDownload
- http://www.linuxmag-france.org/produit.php?produit=396 (épisode 8)
Source et article disponibles en SOSDownload
- 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 "SOSDownload" 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 SOSDownload
- 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 "SOSDownload" 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 SOSDownload
- 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
- http://www.linuxmag-france.org/produit.php?produit=379 (épisode 6, deuxième volet)
Source et article disponibles en SOSDownload
- 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 SOSDownload
- 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 SOSDownload
- 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 SOSDownload
- 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 SOSDownload
- 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".
- http://www.linuxmag-france.org/produit.php?produit=360 (épisode 2)
Source et article disponibles en SOSDownload
- 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 SOSDownload
- 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
(2009-05-10)
PagePrincipale . . . .
ThomasPetazzoni
(2007-11-21)
SOSDownload . . . .
ThomasPetazzoni
(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)