Comment comprendre le code source du noyau Linux pour un débutant? [fermé]

12

Je suis un étudiant intéressé à travailler sur la gestion de la mémoire, en particulier le composant de remplacement de page du noyau Linux.

Quels sont les différents guides qui peuvent m'aider à commencer à comprendre la source du noyau?

J'ai essayé de lire le livre Comprendre le gestionnaire de mémoire virtuelle Linux par Mel Gorman et Comprendre le noyau Linux par Cesati et Bovet, mais ils n'expliquent pas le flux de contrôle à travers le code. Ils finissent par expliquer les différentes structures de données utilisées et le travail effectué par les différentes fonctions. Cela rend le code plus confus.

Mon projet consiste à peaufiner l'algorithme de remplacement de page dans un noyau traditionnel et à analyser ses performances pour un ensemble de charges de travail. Y a-t-il une saveur du noyau linux qui serait plus facile à comprendre (sinon le noyau linux-2.6.xx)?

moucheron
la source
1
Puis-je vous demander pourquoi vous avez choisi de faire de la programmation du noyau, alors que vous ne vous sentez pas à l'aise pour trouver votre chemin dans du code complexe?
LennyProgrammers

Réponses:

13

Focus sur les structures de données . Comprendre les structures de données est généralement plus important que le code.

Si vous ne voyez que des structures de données mais pas de code, vous obtenez toujours une vue d'ensemble du système.

Inversement, si on ne montre que du code mais pas des structures de données, il est très difficile de comprendre le système.

"Je vais en fait affirmer que la différence entre un mauvais programmeur et un bon est de savoir s'il considère son code ou ses structures de données plus importants. Les mauvais programmeurs s'inquiètent du code. Les bons programmeurs s'inquiètent des structures de données et de leurs relations." -- Linus Torvalds

"Montrez-moi vos organigrammes et cachez vos tables, et je continuerai à être mystifié. Montrez-moi vos tables, et je n'aurai généralement pas besoin de vos organigrammes; ils seront évidents." - Fred Brooks.

Maglob
la source
4

Kernel Newbies est assez bon, je suppose

Il y a beaucoup de gens intéressés à savoir comment fonctionne le noyau, je pense que vous pourriez y apprendre une chose ou deux

Mahmoud Hossam
la source
3

L'option de débogage pourrait être utile.

D'autres choses qui peuvent être faites après la construction du noyau avec l'option débogueur consistent à écrire des exemples d'applications de test appelant divers appels système qui invoqueront le noyau et vous pouvez parcourir un morceau de code du noyau à la fois et comprendre son implémentation.

Saroj Panda
la source
0

Une façon d'apprendre une base de code complexe est de l' exécuter dans un débogueur et de voir où les choses vous mènent. Pour Linux, il existe le débogueur de noyau Linux .

LennyProgrammers
la source
Je ne suis pas sûr que cela fonctionnera pour quelqu'un qui essaie toujours de faire quoi avec ce gigantesque morceau de code, et comment il fait les choses
Mahmoud Hossam
1
J'ai fait cette approche avec d'énormes bases de code. Cependant, vous avez besoin d'un point d'entrée et d'une idée de ce qu'il faut rechercher.
LennyProgrammers
Oui, c'est ce que je voulais dire, il doit d'abord savoir quoi chercher avant de déboguer le noyau
Mahmoud Hossam