37 votes

Quelles parties du noyau Linux puis-je lire pour le plaisir ?

La programmation n'est pas mon activité principale, bien que je l'apprécie et que je sois parfois payé pour cela. Depuis plusieurs années maintenant, j'entends parler de Linux et mes amis m'ont montré de nombreux *nixes (ou *nici ?), bien que je reste fidèle à Mac OS.

Pensez-vous qu'il y a des parties du noyau Linux que je pourrais aimer regarder, qui m'aideraient à comprendre ce dont il s'agit ? Par exemple, en quoi Linux est différent de Darwin ?

J'ai grandi avec l'assembleur et DOS, donc des choses comme les interruptions ou le C de bas niveau ne devraient pas être des obstacles à la compréhension. Mais au final, je suis plus intéressé par les concepts de haut niveau, comme le threading ou la pile réseau - je sais que les différents systèmes d'exploitation les font différemment. Et je cherche quelque chose d'amusant, de facile et d'agréable, comme une lecture de fin de soirée.

(Note : fait un CW, juste au cas où)

Mise à jour : j'ai cherché des documents et commencé à lire :

32voto

CesarB Points 18048

Je vous recommande de regarder LXR . Il est plus facile de suivre le flux du code (vous n'avez pas à rechercher chaque fonction appelée - enfin, si, mais le site le fait pour vous).

Quelques points de départ, pour la version actuelle (2.6.30) :

  • start_kernel() - pensez-y comme l'équivalent en noyau de main() . Cette fonction initialise presque tous les sous-systèmes du noyau ; suivez-la pour voir en code ce que vous voyez défiler à l'écran pendant le démarrage.
  • entrée_32.S - appels système et interruptions (version x86-32, qui devrait être plus proche de ce que vous connaissez ; notez l'utilisation du dialecte d'assemblage AT&T au lieu du dialecte Intel auquel vous êtes peut-être plus habitué).
  • tête_32.S - le point d'entrée du noyau. C'est là que le noyau commence après avoir basculé en mode protégé ; à la fin, il appelle start_kernel() .
  • arch/x86/boot - le code d'amorçage en mode réel. Il commence dans l'assemblage ( boot/header.S ), mais saute rapidement dans le code C (à partir de boot/main.c ). Effectue l'initialisation en mode réel (principalement les appels BIOS qui doivent être effectués avant de passer en mode protégé) ; il est compilé en utilisant une astuce bizarre de GCC ( .code16gcc ), qui permet de générer un code 32 bits en mode réel.
  • arch/x86/boot/compressé - si vous vous êtes déjà demandé d'où vient le message "Decompressing Linux...", c'est d'ici.

11voto

paxdiablo Points 341644

Pour ma part, j'ai toujours trouvé que le code de planification des tâches était un peu hilarant :-/.

Je pense que vous devez vous trouver un hobby en dehors de l'industrie. Ou une vie :-)

8voto

SpliFF Points 21945

Les commentaires dans le noyau peuvent être assez drôles. Il y a quelques des conseils pour savoir où trouver les meilleurs sur le kerneltrap.

arch/sparc/lib/checksum.S- /* Sun, tu ne peux pas me battre, tu ne peux pas. Arrête d'essayer, arch/sparc/lib/checksum.S- /* abandonne. Je suis sérieux, je vais botter la merde vivante arch/sparc/lib/checksum.S- *de toi, game over, extinction des feux.*/

6voto

Jeson Park Points 534

linux-0.01.tar.gz est un noyau historique et bon pour le démarrage
il est simple et minuscule et meilleur pour commencer à lire
(il y a aussi void main(void) au lieu de start_kernel() lol :D )

3voto

NoahD Points 2655

Vous voudrez peut-être lire ou survoler un livre qui décrit le noyau Linux avant de l'étudier en profondeur.

Les livres qui me viennent à l'esprit sont :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X