51 points par GN⁺ 2025-03-22 | 1 commentaires | Partager sur WhatsApp
  • Guide pratique expliquant comment développer soi-même un système d’exploitation x86
  • Rédigé de manière à fournir des détails techniques sans révéler trop d’informations via des exemples de code ou des samples
  • N’explique ni la théorie des systèmes d’exploitation ni le fonctionnement d’un système d’exploitation particulier
  • Les premiers chapitres sont détaillés et concrets afin de permettre au lecteur de se familiariser rapidement avec l’écriture de code
  • Les chapitres suivants présentent les concepts et les exigences dans les grandes lignes, en laissant au lecteur le soin de l’implémentation et de la conception
  • Si vous souhaitez étudier la théorie des systèmes d’exploitation, Modern Operating Systems d’Andrew Tanenbaum est recommandé

Principaux chapitres

  • Premiers chapitres
    • Chapitres 2 à 3 : configuration de l’environnement de développement et démarrage du noyau OS dans une machine virtuelle → début de l’écriture du code en C
    • Chapitre 4 : affichage à l’écran et sortie via port série
    • Chapitre 5 : segmentation
    • Chapitre 6 : interruptions et gestion des entrées
  • Étapes après le développement d’un noyau fonctionnel
    • Chapitre 7 : préparation de la prise en charge des applications en mode utilisateur
    • Chapitres 8 à 9 : mise en place de la mémoire virtuelle via la pagination
    • Chapitre 10 : allocation mémoire
    • Chapitre 11 : exécution d’applications utilisateur
  • Sujets avancés
    • Chapitre 12 : système de fichiers
    • Chapitre 13 : appels système
    • Chapitre 14 : multitâche

Contexte du livre et processus de développement

  • Ce livre et ce noyau OS ont été développés dans le cadre d’un cours individuel avancé au Royal Institute of Technology en Suède
  • Les auteurs avaient auparavant suivi un cours de théorie des OS, mais manquaient d’expérience réelle en développement de noyau
  • Ils ont ouvert un nouveau cours et rédigé ce livre afin de mettre la théorie en pratique et d’en approfondir la compréhension
  • L’architecture x86 a longtemps été l’architecture matérielle la plus largement utilisée, et dispose d’une abondante documentation de référence ainsi que d’émulateurs
  • La documentation sur les détails matériels était souvent complexe et difficile à comprendre

Méthode de développement

  • Environ 6 semaines de travail à temps plein
  • Implémentation par petites étapes avec des tests manuels à chaque étape → plus facile d’identifier l’origine des bugs
  • La majeure partie du code a été écrite en pair programming → effet attendu de réduction des bugs

Public visé

  • Convient aux lecteurs disposant des connaissances suivantes :
    • familiarité avec UNIX/Linux et la programmation système
    • familiarité avec le langage C
    • compréhension des systèmes informatiques, de la notation hexadécimale, etc.
  • Les débutants peuvent aussi l’utiliser comme outil d’apprentissage, mais le niveau de difficulté est élevé

1 commentaires

 
GN⁺ 2025-03-22
Avis Hacker News
  • J’adore l’osdev. Je ne connais pas l’objectif final, mais le fait de pouvoir créer ce que l’on veut est vraiment génial.

    • Quand j’ai réussi à faire fonctionner les interruptions x86 de base et les appels système, tout a pris sens.
    • Une fois qu’on lance les appels système, le monde nous appartient.
    • Je recommande vivement de bricoler un OS comme hobby.
    • Je m’en suis servi comme occasion d’apprendre Rust et j’y ai gagné plus que prévu.
    • Maintenant, je suis assez à l’aise avec Rust et je peux provoquer plus de doubles et triples fautes que la plupart des gens.
  • Beaucoup de gens recommandent leur alternative préférée, mais je reste un grand fan de Project Oberon.

    • Ce n’est peut-être pas adapté à l’informatique de 2025, mais c’est un petit OS graphique écrit dans un langage système à sûreté mémoire.
    • Il y a suffisamment de contenu pour apprendre le développement d’OS.
    • Site web de Project Oberon
  • Ce livre présente le défaut classique des tutoriels osdev.

    • Il y a beaucoup d’explications sur les détails de x86, mais presque rien sur l’osdev.
    • Les détails de x86, ce n’est pas l’osdev.
    • Cela ne représente qu’une infime partie de ce qu’un OS de base doit gérer.
  • Mon livre préféré sur les OS est toujours Operating Systems: Three Easy Pieces.

    • Il parle davantage de leur fonctionnement que de développement.
    • Il est disponible gratuitement en HTML et en PDF, et une version imprimée est aussi vendue.
    • Site web d’OSTEP
  • Merci ! Cela a l’air d’être une excellente ressource sur le sujet.

    • J’aimerais encore avoir le code source de l’« OS » que j’avais créé à l’adolescence.
    • J’avais écrit un chargeur de démarrage MBR, le passage en mode protégé, l’affichage de caractères à l’écran et même la gestion de l’entrée clavier.
    • Je le recommande vivement si vous cherchez un défi amusant.
  • Ce commentaire évoque une vraie nostalgie des années 2000.

    • Un site appelé planet-source-code.com était populaire dans la communauté des développeurs.
    • Il y avait des centaines de mini systèmes d’exploitation écrits par les membres.
    • La plupart avaient des bootloaders écrits en C/C++ et en assembleur, compilés avec Mingw32, et démarraient depuis une disquette ordinaire.
  • Le livre est bon. Cela vaut la peine de parcourir les issues sur GitHub.

    • Certains éléments doivent être corrigés.
    • Le dernier commit remonte à 10 ans.
  • J’aimerais que deux livres japonais sur le développement de systèmes d’exploitation soient traduits en anglais.

    • Ils vont jusqu’à faire fonctionner des fenêtres dans un environnement graphique.
    • L’un d’eux est un défi sur 30 jours.
    • MikanOS GitHub
    • 30-days Homemade OS GitHub
    • Il y a eu une tentative de traduction en anglais de « 30-days Homemade OS », mais elle n’est pas allée très loin.
    • os-in-30-days GitHub
    • Je ne connais pas de livre ou d’article en anglais qui aille aussi loin.
    • Fusion n’a pas encore terminé le chapitre sur l’environnement graphique.
    • Site web de Fusion OS
  • Je me demande où se trouve la documentation du petit livre rouge sur les OS.

  • En parlant de développement d’OS, les jeux rendent l’apprentissage amusant.

    • J’avais envie de créer un jeu qui enseigne les systèmes d’exploitation à travers un voyage dans l’histoire de l’informatique.
    • Le joueur y jouerait le rôle de l’ordonnanceur de processus et du gestionnaire d’interruptions.
    • On pourrait commencer sur un système mono-CPU avec une RAM très limitée, évoluer vers un système SMP, puis atteindre les plateformes modernes d’informatique distribuée multi-systèmes.