Implémenter un système d’exploitation en 1 000 lignes
(operating-system-in-1000-lines.vercel.app)- Ce livre explique comment construire pas à pas un petit système d’exploitation à partir de zéro
- Les termes système d’exploitation (OS) ou développement de kernel peuvent intimider, mais les fonctions de base d’un OS (en particulier le kernel) sont étonnamment simples
- Linux aussi a commencé avec 8 413 lignes de code, et même si le kernel Linux d’aujourd’hui est immense, il a débuté comme un petit codebase de projet hobby
Pour commencer
- Nous allons implémenter en C le changement de contexte de base, la pagination mémoire, le mode utilisateur, un shell en ligne de commande, un pilote de périphérique disque et les opérations de lecture/écriture de fichiers
- Tout cela est possible en 1 000 lignes de code
- La partie la plus difficile quand on crée soi-même un OS, c’est le débogage
- Avant d’avoir implémenté le débogage avec printf, on ne peut pas l’utiliser, et il faut apprendre diverses techniques et compétences de débogage qui n’étaient pas nécessaires en développement applicatif
- En particulier, lorsqu’on part « de zéro », on se heurte à des parties difficiles comme le processus de boot et la pagination mémoire
- Mais pas d’inquiétude ! Vous apprendrez aussi comment déboguer un OS
- Plus le débogage est difficile, plus la satisfaction est grande quand on réussit
- Plongeons dans le monde fascinant du développement d’OS !
Autres informations
- Les exemples d’implémentation peuvent être téléchargés sur GitHub.
- Ce livre est proposé sous licence CC BY 4.0, et les exemples d’implémentation ainsi que le code source sont sous licence MIT
- Il faut être à l’aise avec le langage C et un environnement de type UNIX ; si vous pouvez exécuter
gcc hello.c && ./a.out, vous êtes prêt - Ce livre a été écrit à l’origine comme annexe à l’ouvrage japonais « Conception et implémentation d’un microkernel »
- Bon hacking d’OS !
Table des matières du livre
- Intro
- Getting Started
- RISC-V 101
- Overview
- Boot
- Hello World!
- C Standard Library
- Kernel Panic
- Exception
- Memory Allocation
- Process
- Page Table
- Application
- User Mode
- System Call
- Disk I/O
- File System
- Outro
14 commentaires
Jusqu’ici, je ne connaissais les systèmes d’exploitation qu’à travers des livres, donc c’est vraiment appréciable de pouvoir voir du code réel.
Merci de partager cette excellente ressource.
Merci pour cette excellente ressource !!!!!!!!!
Je suis tellement envieux en lisant ça. J'ai l'impression qu'au Japon, il sort vraiment beaucoup d'excellents ouvrages spécialisés. C'est sans doute une question de taille de population, non ?
À voir les livres traduits, il ne semble pas y en avoir qui aillent très loin sur le plan technique ; on dirait plutôt qu’ils couvrent simplement des domaines variés. C’est sans doute parce que le marché est plus vaste.
Merci pour cette excellente ressource.
Essayez d’en créer un vous-même, ou allez jusqu’au niveau où vous le comprenez, et plus tard, voir comment fonctionne un système Linux vous sera utile quand vous manipulerez Linux.
Jusqu’au début des années 2000, c’était même assez à la mode que chacun essaie de créer son propre petit noyau, donc je m’y étais essayé moi aussi, et grâce à ça j’ai pu faire du développement sur le noyau Linux pendant quelques années. Il y a aussi eu pas mal de livres sur la création de systèmes d’exploitation publiés en Corée, donc si vous cherchez bien, vous pourrez trouver des ouvrages qui l’expliquent plus en détail.
Si ce n’est pas pour changer de poste dans ce domaine et que c’est juste pour le plaisir, ce n’est pas une mauvaise idée, mais à votre place, aujourd’hui, je recommanderais plutôt des études sur l’IA ou autour de k8s. Même maintenant, on voit encore parfois sur des sites comme KLDP des messages de gens qui disent vouloir devenir développeur kernel, mais quand on lit les commentaires, on ne leur dit tous qu’une chose : partir à l’étranger.
C’est sans doute parce qu’en Corée, il n’y a pas d’entreprise qui investisse au niveau du kernel, j’imagine… ? haha
Je ne sais pas vraiment si c’est parce qu’il n’y en a pas besoin qu’on ne le fait pas, ou si c’est parce qu’on ne peut pas le faire, mais en tout cas, ça n’existe pas.
Merci pour cette excellente ressource.
Ce genre de livres, c’est sans doute ce qui ressemble aux manuels secrets d’arts martiaux dont on parle dans les romans de wuxia, non ? haha
C’est vraiment très intéressant. J’avais envie depuis longtemps d’étudier un jour la programmation système, et je me dis que cela pourrait être une bonne première approche pour comprendre, du point de vue de la programmation, comment fonctionne un OS !
Avis Hacker News
L’auteur a écrit un livre pour permettre de créer soi-même un système d’exploitation le temps d’un week-end, et il est possible d’utiliser son langage de programmation préféré comme Rust ou Zig plutôt que C
Sur la base d’une expérience de programmation de système d’exploitation "hobby", il vaut mieux ajouter la configuration de débogage GDB le plus tôt possible
Créer un petit système d’exploitation pour RISC-V semble vraiment chouette
Pour les amateurs de Rust, le guide de phil-opp peut être un exercice amusant
Quelqu’un a commencé à étudier RISC-V et note que l’émulateur fourni par le livre qu’il lit est plus simple que QEMU et possède une licence étrange
Il serait intéressant de comparer avec xv6-riscv
Les discussions de bas niveau sont toujours intéressantes
Le plus difficile dans la création d’un système d’exploitation, c’est le débogage
Deux projets sont mentionnés
Bonne ressource, mise de côté pour lecture ce week-end
Écrire un noyau en Nim...
Ça a l’air amusant.