Xv6, un système d’exploitation pédagogique simple de type Unix
(pdos.csail.mit.edu)- Xv6 est un OS pédagogique simple de type Unix, conçu pour apprendre la structure d’un système d’exploitation, et utilisé dans le cours de premier cycle du MIT 6.1810
- Développé à l’été 2006, il a ensuite été porté sur RISC-V pour le cours 6.1810 afin de s’adapter à un environnement pédagogique moderne
- Les sources et la documentation sont fournis dans les dépôts Git
xv6-riscvetxv6-riscv-book, que l’on peut compiler et lire soi-même - Sa conception et son contexte pédagogique trouvent leurs racines dans Unix V6 et Commentary on UNIX' 6th Edition de John Lions
- Pour lire également le code original d’Unix V6, des références comme le commentaire de Lions, les sources de V6 et le PDP11/40 Processor Handbook sont utiles
Xv6 et 6.1810
- Xv6 est un système d’exploitation pédagogique simple de type Unix
- Il a été développé à l’été 2006 et porté sur RISC-V pour le cours de premier cycle du MIT 6.1810
Sources et ressources d’apprentissage
- Les sources les plus récentes de Xv6 peuvent être récupérées avec la commande suivante
- La documentation la plus récente de Xv6 est fournie dans un dépôt séparé
- Xv6 s’inspire de Unix V6 et de Commentary on UNIX' 6th Edition de John Lions
Références pour lire les sources originales d’Unix V6
- The PDP11/40 Processor Handbook est une ressource utile pour comprendre le code original d’Unix V6
- Le PDF, basé sur des images numérisées, n’est pas interrogeable en texte
- Une version web indexée par nom d’instruction est également proposée
Demande de retours
- Des retours sont recherchés sur l’expérience d’utilisation de Xv6, son introduction dans les cours, les améliorations qui faciliteraient son adoption, ainsi que ce qui a bien fonctionné ou non
- Le contact est
61810-staff@lists.csail.mit.edu
- Le contact est
1 commentaires
Commentaires sur Hacker News
J’ai suivi ce cours au MIT et je le recommande à 20/10, surtout aux personnes qui n’ont pas de bagage en systèmes.
Le manuel est assez facile à comprendre, et les TP sont excellents pour vérifier qu’on a bien compris. En revanche, au premier essai, il vaut peut-être mieux sauter le pilote réseau.
J’ai suivi au MIT un cours qui utilisait cet OS, et il était vraiment excellent.
Encore aujourd’hui, j’ai parcouru le site du cours, et on peut en fait le suivre en autodidacte. Les notes de cours, les TP, le dépôt xv6 avec une branche pour chaque TP, et même les instructions pour l’exécuter soi-même sont tous en ligne ; c’est étonnamment ouvert.
Premier TP : https://pdos.csail.mit.edu/6.1810/2023/labs/util.html
Je compte refaire tout le parcours moi-même jusqu’au bout bientôt.
Beaucoup de projets de mon cours universitaire de systèmes d’exploitation consistaient à construire quelque chose par-dessus le système d’exploitation xv6.
L’un d’eux consistait à créer un ordonnanceur pour xv, et c’était clairement une bonne façon d’apprendre les différents composants d’un système d’exploitation.
Dans une université espagnole, Plan 9 a été, ou est encore, utilisé à des fins pédagogiques.
En voyant le titre pour la première fois, j’ai cru qu’il s’agissait d’une nouvelle version de l’ancien visualiseur d’images xv : http://www.trilon.com/xv/
J’ai toujours voulu comprendre le noyau Windows NT. Les premières versions étant probablement plus simples, ce serait sans doute un bon point de départ.
J’ai entendu dire que la première version était proche de VMS, et je me demande si c’est vrai. Je me demande aussi s’il existe de la documentation sur VMS ; j’ai entendu dire qu’OpenVMS était open source, mais la version me semble trop récente.
Il est vrai que Dave Cutler a dirigé plusieurs projets chez DEC, dont des projets liés à VMS, mais ce que le noyau Microsoft New Technology a hérité de VMS relevait surtout d’un héritage intellectuel en matière de conception et d’architecture.
Avant que son équipe ne soit écartée chez DEC, Dave travaillait déjà à une refonte majeure de VMS ou à son successeur, et une grande partie de cette vision est passée dans Windows, même si cela s’est fait en sacrifiant certains schémas de conception robustes du monde des mini-ordinateurs.
Cutler considérait l’équipe MSDOS comme des programmeurs débutants empilant des solutions spaghetti sur les mauvais problèmes, mais comme Bill Gates verrouillait le marché avec ses contrats OEM, Bill lui a donné en pratique un chèque en blanc pour produire un vrai noyau capable de rivaliser avec ce que Steve construisait chez NeXT.
Donc, en termes de fonctionnalités ou de forme, NT n’a rien à voir avec VMS, et son implémentation est également totalement différente. VMS disposait d’une bibliothèque standard C propre et d’une suite de compilateurs. On peut toutefois y voir le mouvement de gens issus des mini-ordinateurs descendant dans le monde des micro-ordinateurs pour y concurrencer les autres.
Pour mieux saisir l’ambiance, les interviews de Dave Plummer et de Cutler sur YouTube valent le détour.
La documentation VMS est très abondante ; à l’origine, elle était livrée avec plusieurs mètres de documents. Elle est encore vendue aujourd’hui, et l’on peut aussi obtenir gratuitement des images VM pour amateurs.
OpenVMS n’est pas open source, et l’idée que sa version serait trop récente n’est pas vraie non plus.
Il faut toujours vérifier ses prémisses avant de poser une question. Si l’on veut demander « puisque A, est-ce que B est possible ? », il faut d’abord vérifier que A est vrai.
Je me demande pourquoi Unix v6. Je ne vois pas pourquoi enseigner avec une conception vieille de 50 ans.
Pour enseigner les bases des systèmes d’exploitation — l’ordonnancement, la communication inter-processus, la gestion des espaces d’adressage — une architecture micro-noyau me semblerait plus adaptée.
Cela permet de mieux comprendre les nouvelles technologies que l’on rencontrera plus tard, et d’élargir sa perspective pour la suite de sa carrière.
N’ayant pas connu une partie de cette histoire, j’aurais vraiment aimé l’apprendre à l’université.
Ils le choisissent probablement souvent parce qu’il est suffisamment bon, simple, et facile à enseigner en un semestre pendant lequel les étudiants suivent aussi d’autres cours. Je me demande si l’idée est que l’architecture micro-noyau serait non seulement meilleure, mais aussi plus facile à enseigner.
Les abstractions fondamentales d’Unix v6 sont encore valables aujourd’hui.
La différence essentielle entre micro-noyaux et noyaux monolithiques tient à la façon dont l’espace d’adressage est partagé entre l’espace utilisateur et le noyau, et je ne vois pas bien pourquoi une architecture micro-noyau serait meilleure. Je me demande aussi pourquoi on devrait enseigner une architecture qui n’est pas largement utilisée.
La plupart des logiciels exécutés sur Internet ne tournent pas non plus sur un micro-noyau, et il en va de même pour la plupart des logiciels disponibles sur Internet. Un tel cours ne semble pas suffire à préparer à comprendre les noyaux que l’on utilise ou que l’on rencontre professionnellement.
Je me demande quelle serait la bonne façon, pour quelqu’un qui apprend seul, de mettre les mains dessus.
Plan 9 est aussi une base de code assez simple à comprendre.
Les espaces de noms par processus, les binds et le fait de tout traiter comme un fichier lui donnent une élégance difficile à trouver dans les autres OS de type Unix.
Au semestre dernier, dans mon cours de systèmes d’exploitation, nous avons utilisé PintOS ; j’aimerais qu’il existe un second volet qui aille plus en profondeur.