it-swarm.dev

Wie verstehe ich den Quellcode des Linux-Kernels für Anfänger?

Ich bin ein Student, der sich für die Speicherverwaltung interessiert, insbesondere für die Seitenersetzungskomponente des Linux-Kernels.

Welche verschiedenen Anleitungen können mir helfen, die Kernelquelle zu verstehen?

Ich habe versucht, das Buch nderstanding the Linux Virtual Memory Manager von Mel Gorman und nderstanding the Linux Kernel von Cesati und Bovet zu lesen, aber sie erklären nicht den Kontrollfluss durch der Code. Am Ende erklären sie nur verschiedene verwendete Datenstrukturen und die Arbeit, die verschiedene Funktionen ausführen. Dies macht den Code verwirrender.

Mein Projekt befasst sich mit der Optimierung des Seitenersetzungsalgorithmus in einem Mainstream-Kernel und der Analyse seiner Leistung für eine Reihe von Workloads. Gibt es eine Variante des Linux-Kernels, die leichter zu verstehen wäre (wenn nicht der Linux-2.6.xx-Kernel)?

12
user16867

Fokus auf Datenstrukturen. Das Verständnis von Datenstrukturen ist normalerweise wichtiger als Code.

Wenn Ihnen nur Datenstrukturen, aber kein Code angezeigt werden, erhalten Sie dennoch einen Überblick über das System.

Umgekehrt ist es sehr schwer, das System zu verstehen, wenn nur Code, aber keine Datenstrukturen angezeigt werden.

"Ich werde in der Tat behaupten, dass der Unterschied zwischen einem schlechten und einem guten Programmierer darin besteht, ob er seinen Code oder seine Datenstrukturen für wichtiger hält. Schlechte Programmierer sorgen sich um den Code. Gute Programmierer sorgen sich um Datenstrukturen und ihre Beziehungen." - Linus Torvalds

"Zeigen Sie mir Ihre Flussdiagramme und verbergen Sie Ihre Tische, und ich werde weiterhin verwirrt sein. Zeigen Sie mir Ihre Tische, und ich werde Ihre Flussdiagramme normalerweise nicht brauchen; sie werden offensichtlich sein." - Fred Brooks.

13
Maglob

Kernel Newbies ist ziemlich gut, denke ich

Es gibt viele Leute, die daran interessiert sind, etwas über die Funktionsweise des Kernels zu lernen. Ich denke, Sie könnten dort ein oder zwei Dinge lernen

4
Mahmoud Hossam

Die Debugger-Option könnte nützlich sein.

Weitere Dinge, die nach dem Erstellen des Kernels mit der Debugger-Option getan werden können, sind das Schreiben einiger Beispieltestanwendungen, die verschiedene Systemaufrufe aufrufen, die den Kernel aufrufen, und Sie können jeweils einen Teil des Kernel-Codes durchlaufen und dessen Implementierung verstehen.

3
Saroj Panda

Im Abschnitt Betriebssysteme des Artikels Was jeder Informatik-Major wissen sollte empfahl Matt Might Linux-Kernel-Entwicklung durch Liebe . Obwohl dies ein fortgeschrittenes Thema ist, ist das Buch sehr gut geschrieben.

2
Anthony

Eine Möglichkeit, eine komplexe Codebasis zu erlernen, besteht darin, sie in einem Debugger auszuführen und zu sehen, wohin Sie führen. Für Linux gibt es den Linux Kernel Debugger .

0