Welcome !
Introduction
SOS, for Simple Operating System, is an operating system kernel which aims at being simple to understand and that nonetheless covers concepts and functionalities of modernal OSes. The OS code comes with a batch of articles published in the french magazine called Linux Magazine France, between 2004 and 2006. Each month (or almost),
http://sos.enix.org offers the operating system's code for the current month and the previous ones. The articles are published in the french language, and are unfortunetaly not yet available in english. However, we'd like these to be available in english, and we will be working on it when the batch of articles will be completed.
SOS and the articles published in Linux Magazine France are particularly interesting for people wishing to understand how an operating system works, not for operating system experts. The articles aim at learning, by pratice, the structure and internals of an operating system. Such a deep understanding is not simply anecdotal : it allows to grasp a synthetic view of the whole system. It allows to better understand strange behaviours, to better find the potential reasons of the errors that we often face while working on other systems. And, for the software developer, it allows to have a pretty good vision of available functionalities on any system, and to have the intuition of the architecture and of the mechanisms to implement the most elegantly and the most smartly way to realize the desired functionnalities.
--
David Decotigny & Thomas Petazzoni? (2004, 2005, 2006)
Already published articles
As stated before, articles have been published in french only for the moment.
- Linux Magazine, February 2006 (step 9, second part)
Source code available for download?
- Generic layer for block drivers : blockdev
- Block and page caches
- Handling of PC-style partitions, IDE driver (for Qemu, Bochs and not-too-exotic PCs)
- As a demonstration : hard drive partitions list, a dd-like tool, a batch of tests
- Linux Magazine, January 2006 (step 9, first part)
Source code available for download?
- Generic layer for character devices : chardev
- Character drivers : /dev/mem, /dev/zero, tty, serial line, keyboard, screen
- As a demo : a small shell available through the keyboard or the command line.
- Linux Magazine, July/August 2005 (step 8)
Source code available for download?
- VFS, Virtual File System : file management (open, read, write, link, symlink, unlink, mount, mmap, ...)
- As a demo : around 300 tests of these functions on a demonstration file system (virtfs) in userland/fstest.c
- 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