Présentation
KOS est un projet de développement d'un système
d'exploitation pour des machines à base de x86, dont le code source
est distribué sous les termes de la Licence Publique Générale
GNU.
Le projet débuta à l'initiative de jeunes programmeurs, pour la
plupart étudiants ou lycéens. Le premier objectif du projet n'est pas
l'obtention d'un système d'exploitation révolutionnaire et
opérationnel immédiatement, mais l'apprentissage du fonctionnement
interne d'un OS et du matériel ainsi que du développement en équipe
dans le cadre d'un projet important.
A l'heure actuelle, KOS est un système qui fonctionne avec certes
des fonctionnalités encore limitées. Il dispose toutefois de quelques caractéristiques originales. Nous vous encourageons à télécharger les sources, éventuellement via CVS. Nous sommes également à la
recherche de nouveaux contributeurs
!
Objectif: porter une bibliothèque standard C telle que la
glibc sous KOS, afin de disposer de toutes les commandes et
outils Unix standards. L'objectif ultime étant de pouvoir compiler KOS
sous KOS !
Ce site propose également des liens vers une multitude de documents
ayant trait au développement des OS et au mode de fonctionnement des
machines.
News
21 Juin 2005
Du coté de KOS, rien de nouveau depuis janvier. Les principaux développeurs sont concentrés sur d'autres projets, en particulier David et Thomas, sur SOS.
Depuis le premier volet de l'épisode 6 paru dans le LinuxMag numéro 68 dont nous avions parlé en janvier, de nouveaux épisodes ont été publiés:
- Épisode 6, deuxième volet, paru dans le LinuxMag numéro 69, concerne les threads noyau, la synchronisation et l'ordonnancement ;
- Épisode 7, premier volet, paru dans le LinuxMag numéro 70, concerne les threads utilisateur, le changement de privilège, les appels système, les espaces d'adressage séparés, la notion de processus, un chargeur ELF simplissime et les premières applications utilisateur ;
- Épisode 7, deuxième volet, paru dans le LinuxMag numéro 72, concerne la gestion de l'espace utilisateur : appels mmap/munmap/mprotect/mremap (mapping de "fichiers" et mappings anonymes), fork, exec, copy-on-write, malloc, partage de pages, /dev/zero, /dev/mem, /dev/kmem ;
Dans le numéro 74 de juillet, disponible en kiosque à partir du 30 juin, il est question de VFS et de système de fichiers.
D'autre part, du 5 au 9 juillet ont lieu à Dijon les Rencontres Mondiales du Logiciel Libre. Pendant 5 jours, vous pouvez assister gratuitement à des dizaines de conférences sur des sujets très variés. En particulier, cette année, un thème Conception et développement des systèmes d'exploitation est proposé, avec pas moins de 21 conférences. Les sujets traités vont des systèmes à image unique, à la virtualisation, en passant par les systèmes à micro-noyau, l'utilisation de langages de haut-niveau pour la réalisation d'OS, et bien d'autres.
Une présentation de SOS sera donnée par David Decotigny et Thomas Petazzoni. Xavier Grave fera une présentation de Toy Lovelace, une adaptation de SOS en Ada. Thomas proposera également un atelier Merveilleux voyage à l'intérieur d'un OS, orienté pour les débutants en système d'exploitation.
L'entrée à ces rencontres est libre et gratuite. L'organisation met à disposition des chambres de cité universitaire à des prix très intéressants, en particulier pour les étudiants. Nous ne pouvons que vous encourager à venir assister aux conférences et goûter à l'ambiance sympathique de ces rencontres !
09 Janvier 2005
Le projet KOS recherche de nouveaux développeurs et contributeurs. Si vous êtes intéressés, n'hésitez pas à consulter la page Comment contribuer et à vous abonner à la liste de diffusion.
Le site Web a été mis à jour. La plupart des pages sont désormais valides XHTML et utilisent une feuille style CSS. Les différentes sections du site ont été réorganisées pour plus de clareté et toutes les informations ont été mises au goût du jour. Les documentations obsolètes sont marquées comme telles.
Le document Compiler, tester et débugger KOS a été mis à jour pour permettre à de nouveaux arrivants de disposer d'informations valides. Un entête a été ajouté dans tous les documents obsolètes pour préciser leur état.
Au niveau du code, du travail a été réalisé par Thomas :
- Application du patch qui modifie en profondeur la gestion du mapping mémoire et du reverse mapping et la gestion de la mémoire physique ;
- Intégration d'un mécanisme EXPORT_FUNCTION_RESTRICTED qui permet de limiter l'exportation d'une fonction à certains modules seulement ;
- Ajout de tests de stress pour valider le fonctionnement des mutex ;
- Correction de bugs dans les fonctions de manipulation des mutex et dans les nouvelles fonctions de gestion mémoire ;
- Mise en place de mutex dans la gestion de la mémoire virtuelle. Celle-ci est déjà beaucoup plus robuste lors du test de stress, mais un problème de fuite de mémoire empêche le test d'arriver à son terme.
- Amélioration de certaines étapes de la compilation et du test. Les Makefile permettent maintenant de lancer Qemu directement.
Les améliorations sur la synchronisation dans la mémoire sont encourageantes, et nous espérons pouvoir obtenir prochainement une gestion de la mémoire solide vis à vis des accès concurrents.
La page Comment contribuer ? liste quelques idées de travaux réalisables en parallèle par de nouveaux développeurs !
08 Janvier 2005
Autour du projet KOS :
- La série des articles sur SOS se poursuit. La 6ème partie de la série a été publiée dans le numéro 68 de Linux Magazine France.
- Ludovic Courtès et Thomas Petazzoni sont responsables du thème Développement et conception des systèmes d'exploitation aux Rencontres Mondiales des Logiciels Libres 2005 qui auront lieu du 5 au 9 juillet à Dijon. Ils recherchent des développeurs de Logiciels Libres qui souhaiteraient venir présenter leurs travaux ayant trait aux systèmes d'exploitation. Vous pouvez les contacter pour plus d'informations.
04 Novembre 2004
Le projet KOS tourne toujours un peu au ralenti, mais tout de même quelques nouvelles :
- La série d'articles sur la programmation d'un petit système d'exploitation, SOS se poursuit dans Linux Magazine France. Le numéro 64, paru en septembre 2004, aborde la gestion de la mémoire physique, le numéro 65, paru en octobre 2004, étudie la mise en place de la pagination, et le numéro 66, paru en novembre 2004, propose l'implémentation d'un allocateur de mémoire pour le noyau. Les anciens articles sont disponibles sur le site de SOS. Il n'y aura pas d'article au mois de décembre, la publication reprendra au mois de janvier 2005, avec les articles concernant les threads et le multitâche. N'hésitez pas à utiliser la mailing-list de SOS pour poser vos questions !
- Thomas a récemment travaillé sur la refonte des parties vmap, rmap et pmm (respectivement gestion du mapping, du reverse-mapping et de la mémoire physique), dans l'objectif de rendre possible la mise en place de la synchronisation. Un patch a été envoyé à la mailing-list de développement, mais n'a pas reçu de retours pour l'instant.
30 Juin 2004
Du nouveau :
- Le second article de la série d'articles consacrée à SOS est sorti. Il est présent dans le numéro 63 de Linux Magazine France.
- David Decotigny et Thomas Petazzoni seront présents aux Rencontres Mondiales du Logiciel Libre à Bordeaux du 6 au 10 juillet. Ils y feront une courte présentation de KOS.
- Thomas travaille sur les problèmes de synchronisation de la mémoire virtuelle. Un stress test a été écrit, et un début de réfléxion sur les solutions possibles a été menée.
- Alexandre Belloni s'est montré intéressé par le développement d'un pilote de carte réseau NE2000 et par le développement d'une pile de protocoles réseau.
18 Juin 2004
Le projet KOS est resté assez peu actif ces quelques derniers mois. Cependant, diverses nouvelles sont à signaler :
- David et Thomas ont commencé la rédaction d'une série d'une dizaine d'articles permettant de découvrir pas à pas la réalisation pratique d'un petit système d'exploitation. Ces articles sont publiés chaque mois avec le code associé dans Linux Magazine France. Le premier article a été publié dans le numéro 62. De plus amples informations sont disponibles sur le site de l'OS, SOS
- La réalisation par Thomas d'une présentation sur le fonctionnement interne de Linux, avec une petite partie consacrée à KOS à Libr'East 2004, dans le cadre du thème dédié au système d'exploitation. La présentation qui a duré 1h30 a attiré une vingtaine de personnes. Les supports sont disponibles [PDF] [SXI]. Une vidéo sera prochainement disponible.
- La réalisation par Thomas d'une présentation sur le fonctionnement interne d'un OS et de KOS. La présentation, beaucoup plus complète que la précédente, a eu lieu à l'UTBM en 2 parties de 2h30 chacune. Les supports sont disponibles [PDF OS] [SXI OS] [PDF KOS] [SXI KOS]. Cette présentation a été organisée dans le cadre des activités de Lolut, et un compte rendu est disponible.
16 Janvier 2004
Suite au travail réalisé dans le cadre d'une unité de valeur à
UTBM, Mélanie et Thomas ont réalisé le mardi 13 janvier une soutenance, dont les
transparents sont disponibles. Le
rapport est également disponible, il donne un bon aperçu de KOS, notamment de Karm et du système des modules. Enfin, il explique avec précision le travail réalisé pendant le semestre.
30 Décembre 2003
Suite au travail de David et Thomas ces deux derniers jours, de nouvelles choses ont été réalisées :
- Génération depuis les interfaces décrites en XML de stubs pour l'espace utilisateur : du code et un header. Le header contient les numéros d'interfaces et de méthodes, ainsi que les prototypes des wrappers et les déclarations de types. Le code contient des wrappers pour toutes les méthodes de toutes les interfaces, sous la forme __kos_sys_interface_method(...)
- Reprise complète du module kos-sys, tout a été nettoyé, la mini-libc a été reprise pour qu'elle utilise les nouveaux wrappers
- Appel système brk modifié pour supporter les fonctions brk() et sbrk() telles que définies par la libc
- Ajout d'une DTD pour valider les descriptions des interfaces en XML
- De la propreté : moins de warnings, des dépendances correctes, des const là où c'est nécessaire, des ajouts de commentaire pour expliquer des choses difficiles, quelques corrections de bugs ...
25 Décembre 2003
Toute l'équipe de KOS vous souhaite un joyeux Noël et une bonne année. Année qui se termine avec quelques nouveautés dans KOS, suite à la rencontre entre Julien et Thomas fin décembre, et au travail de Thomas et Mélanie durant les 2 derniers mois :
- Nouvelle gestion du format binaire ELF, avec support correct du BSS, et une abstraction des formats binaires. Nouveaux modules kbs et kbs/elf
- Système d'allocation des piles utilisateur, permettant de sélectionner la taille de la pile pour chaque thread
- Possibilité de créer plusieurs threads utilisateur par team, et ce depuis un thread utilisateur lui même grâce au nouveau syscall thread_create
- La fonction de démapping (as_unmap_ures) fonctionne correctement, et la fonction de mapping (as_map_ures) est désormais complète, avec le support correct du MAP_FIXED
- L'appel système brk() fonctionne désormais, il est possible d'agrandir/réduire le tas comme on le souhaite
- Début de support du PCI, avec la détection des périphériques PCI présents dans le système
- Correction de quelques bugs
Mélanie et Thomas terminent leur semestre à l'UTBM, et vont produire un rapport sur leur travail dans KOS depuis début septembre.
Pour KOS, la priorité est à l'ajout de la synchronisation dans l'ensemble du système, pour le consolider avant de repartir pour implémenter de nouvelles fonctionnalités.
12 Novembre 2003
Nouvelle version de HelloWorld OS, la
1.0.1, avec un README en français et un Makefile plus propre. Merci à Victor Stinner pour les contributions.