Quelle est la meilleure façon de connaître les composants internes du noyau Linux ou BSD ?[fermé]

StackOverflow https://stackoverflow.com/questions/24648

Question

J'aimerais acquérir une meilleure connaissance des composants internes du système d'exploitation.Gestion des processus, gestion de la mémoire et des trucs comme ça.
Je pensais apprendre en connaissant soit Linux, soit le noyau BSD.
Quel noyau est le meilleur à des fins d’apprentissage ?
Quel est le meilleur endroit pour commencer ?
Pouvez-vous me recommander de bons livres ?

Était-ce utile?

La solution

Au collège, j'avais un cours sur les systèmes d'exploitation où nous utilisions un livre de Tanenbaum.Dans le cours, nous avons implémenté un pilote de périphérique dans le Système d'exploitation Minix.C'était très amusant et nous avons beaucoup appris.

Une chose à noter cependant, si vous choisissez Minix, il est conçu pour l'apprentissage.Il s'agit d'un micro-noyau, alors que Linux et BSD sont un noyau monolithique, donc ce que vous apprenez n'est peut-être pas traduisible à 100 % pour pouvoir travailler avec Linux ou BSD, mais vous pouvez toujours en tirer beaucoup, sans avoir à traiter beaucoup de choses. autant d'informations.

En passant, si vous avez lu Juste pour le fun, Linus jouait en fait avec Minix avant d'écrire Linux, mais ce n'était tout simplement pas suffisant pour ses besoins.

Autres conseils

En tant qu'utilisateur de Linux, je dirais que Linux dispose d'une excellente communauté permettant aux utilisateurs de se renseigner sur le noyau. http://kernelnewbies.org est un excellent endroit pour commencer à poser des questions et à découvrir le fonctionnement du noyau.Je ne peux pas faire de recommandation de livre, mais une fois que vous avez lu le matériel de départ sur kernelnewbies, la source est très bien documentée.

Outre les bons livres déjà mentionnés (la conception et la mise en œuvre du système d'exploitation sont particulièrement bonnes), procurez-vous un noyau Linux version 1.x, chargez-le dans VMWare ou VirtualBox et commencez à jouer à partir de là.

Vous devrez passer beaucoup de temps à parcourir le code source.Pour cela, consultez http://lxr.linux.no/ qui est une version liée consultable de la source et qui rend la vie beaucoup plus facile.Pour la toute première version de Linux (0.01), consultez http://lxr.linux.no/linux-old+v0.01/.Le plaisir commence à http://lxr.linux.no/linux-old+v0.01/boot/boot.s.Au fur et à mesure que vous progressez de version en version, consultez le ChangeLog et explorez les parties qui ont changé pour vous éviter de relire le tout.

Une fois que vous avez maîtrisé les concepts, regardez 2.0, puis 2.2, etc.Soyez prêt à consacrer BEAUCOUP de temps au processus.

J'avais déjà acheté ces livres sur recommandation dans le même but, mais je n'ai jamais eu l'occasion de les étudier moi-même, je ne les prends donc que comme conseils de seconde main.

Constatant le manque de BSD ici, j'ai pensé que j'apporterais ma contribution :

Je n'ai suivi aucun cours moi-même, mais j'ai entendu Marshall Kirk McKusick parler à d'autres occasions, et il est vraiment bon dans ce qu'il fait.

Et bien sûr les pages de manuel BSD, qui constituent une excellente ressource car elles sont bien plus entretenues que votre page de manuel Linux moyenne.Prenons par exemple le uvm(9) page de manuel, décrivant l'interface de mémoire virtuelle dans OpenBSD.

Pas tout à fait lié, mais je recommanderai aussi la vidéo Histoire des distributions de logiciels de Berkeley car il donne une belle introduction aux parties BSD de l'histoire et de la culture UNIX ainsi que de nombreuses anectodes hilarantes de l'époque.

Je vous recommande les noyaux BSD !Les noyaux BSD ont beaucoup moins de pirates informatiques, il est donc plus facile de suivre leur évolution.Les noyaux BSD et Linux ont d'excellents pirates informatiques, mais certaines personnes affirment que la renommée inférieure de BSD filtre les novices.Il est également plus facile de prendre des décisions de conception lorsque les sources ne sont pas mises à jour 100 fois par jour.

Parmi les choix BSD, mon préféré est NetBSD.Ce n’est peut-être pas le choix simple que vous souhaitez pour votre ordinateur de bureau, mais comme il met fortement l’accent sur la portabilité, la qualité est assez bonne.Je pense que cette partie dit tout :

Certains systèmes semblent avoir la philosophie du « Si ça marche, c'est vrai ».Dans cette optique, la philosophie de NetBSD pourrait être décrite ainsi : « Cela ne fonctionne que si c'est bien ».

Si vous avez travaillé assez longtemps, vous saurez que NetBSD est une véritable joie pour apprendre un bon codage.Bien que professionnellement, vous trouverez plus de chances avec Linux

Quel que soit votre choix, commencez à rejoindre leurs listes de diffusion, suivez les discussions.Étudiez quelques correctifs et essayez enfin de corriger vous-même les bogues.Concernant les livres, recherchez les articles de Diomidis Spinellis et son livre.Ce n'est pas exactement un livre sur le noyau, mais il contient des exemples NetBSD et aide beaucoup à aborder les gros logiciels.

Rien ne remplace la plongée dans le code.Essayez de trouver un pilote ou un sous-système qui vous intéresse et explorez-le.Avec des outils comme Poste de travail VMware il est très simple d'apporter les modifications souhaitées, de prendre un instantané de la VM et d'exécuter votre noyau modifié.Si le noyau panique au démarrage, peu importe ?Revenez simplement à l’instantané et résolvez le problème.

Pour les livres, je recommande fortement Développement du noyau Linux par Robert Amour.C'est un livre merveilleusement écrit - beaucoup d'informations, bien organisé et plein d'humour...pas de lecture sèche du tout.

Suivez les conseils de Mike Stone et commencez avec Minix.C'est ce que Linus a fait !Le manuel est vraiment bien écrit et Tannenbaum fait un excellent travail en montrant comment les différentes fonctionnalités sont implémentées dans un système réel.

Personne ne semble avoir mentionné que BSD au niveau du code est beaucoup plus propre et plus cohérent.La documentation est également bien meilleure (comme déjà mentionné).Mais comme il y a beaucoup de manipulations avec le système que vous choisissez, je choisirais celui que vous utilisez le plus souvent.

Linux et Minix sont amusants à apprendre.Si vous souhaitez également savoir à quoi ressemble un système d'exploitation à micro-noyau moderne, vous pouvez consulter QNX.La documentation complète est disponible en ligne et elle est très accessible.Par exemple, ce livre en ligne.

Quand j'étais à l'université, j'ai passé un semestre à étudier les systèmes d'exploitation et, dans le cadre de cette mission, nous devions implémenter un système de fichiers basé sur la RAM sous Linux.

C'était un moyen fantastique de comprendre les composants internes du noyau Linux et de comprendre comment tout s'emboîte. Et c'était très amusant de jouer avec la façon dont il interagit également avec les outils standard.

Je ne l'ai pas essayé moi-même, mais vous pouvez accéder à Linux From Scratch et commencer à créer votre propre distribution Linux.Cela ressemble à quelque chose qui prendra beaucoup de temps, mais qui se traduira par une connaissance approfondie des entrailles du noyau Linux et du fonctionnement de chaque partie.Bien entendu, vous pouvez compléter cet apprentissage en suivant l’un des autres conseils présentés ici.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top