3 points par GN⁺ 2024-06-09 | 1 commentaires | Partager sur WhatsApp
  • 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-riscv et xv6-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

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

1 commentaires

 
GN⁺ 2024-06-09
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.

    • Je me demande si ce cours est disponible en ligne. Je n’ai pas trouvé d’enregistrements des cours sur OpenCourseWare, et j’ai trouvé une playlist YouTube liée à xv6, qui n’est pas du MIT mais a l’air plutôt bien : https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW...
    • J’ai suivi à l’UCI un cours qui reprenait une grande partie du cours du MIT en le rendant beaucoup plus facile, et il reste recommandable.
  • 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.

    • Pour bien voir le processus de développement du noyau NT, le livre de 1996 Show Stopper est une bonne lecture.
      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.
    • Il faut regarder la série de livres Windows Internals, les anciens numéros de MSTech Journal et de DDJ, ainsi que les manuels VMS dans les archives de Digital.
    • Le code source de Windows 2000 a fuité sur Internet, et il est très probable que des versions plus récentes aient aussi fuité. Il a même été utilisé comme outil pédagogique.
    • Dire que la première version de NT est proche de VMS n’est pas exact.
      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.
    • OpenVMS était open source ?
  • 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.

    • Étudier les technologies qui ont précédé celles largement utilisées aujourd’hui est une bonne façon de comprendre comment nous en sommes arrivés là, quels compromis ont été faits et pourquoi, et ce que nous avons peut-être perdu en chemin.
      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é.
    • Il faut apprendre à marcher avant de courir. Xv6 est basique, mais pour des étudiants qui découvrent ces concepts, c’est une très bonne introduction pour acquérir les bases des systèmes d’exploitation en un semestre.
    • Je ne pense pas que beaucoup de professeurs choisissent Xv6 pour leurs cours de systèmes d’exploitation uniquement parce que sa conception est excellente.
      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.
    • L’architecture de von Neumann a 80 ans. Je ne vois pas pourquoi l’âge d’une conception importerait si elle reste la plus pertinente et la plus largement utilisée.
      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.
    • Les micro-noyaux jouent un rôle important dans l’écosystème logiciel, mais la plupart des logiciels que nous rencontrons ne sont pas orchestrés par un micro-noyau.
      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.

    • Certaines décisions de conception de Plan 9 méritent le respect.
      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.