Ich bin ein Student, der sich für Memory Management interessiert, insbesondere für die Page-Replacement-Komponente des Linux-Kernels.
Welche verschiedenen Anleitungen können mir helfen, die Kernelquelle besser zu verstehen?
Ich habe versucht, das Buch " Understanding the Linux Virtual Memory Manager" von Mel Gorman und " Understanding the Linux Kernel" von Cesati und Bovet zu lesen , aber sie erklären nicht den Kontrollfluss durch den Code. Sie erklären lediglich die verschiedenen verwendeten Datenstrukturen und die Arbeit, die verschiedene Funktionen ausführen. Dies macht den Code verwirrender.
In meinem Projekt geht es darum, den Algorithmus zum Ersetzen von Seiten in einem Mainstream-Kernel zu optimieren und dessen Leistung für eine Reihe von Workloads zu analysieren. Gibt es eine Variante des Linux-Kernels, die einfacher zu verstehen wäre (wenn nicht der Linux-2.6.xx-Kernel)?
quelle
Antworten:
Datenstrukturen im Fokus . Das Verständnis von Datenstrukturen ist in der Regel wichtiger als Code.
Wenn Ihnen nur Datenstrukturen, aber kein Code angezeigt werden, haben Sie immer noch den Überblick über das System.
Umgekehrt ist es sehr schwer, das System zu verstehen, wenn nur Code, aber keine Datenstrukturen angezeigt werden.
quelle
Kernel Newbies ist ziemlich gut, denke ich
Es gibt eine Menge Leute, die daran interessiert sind, wie der Kernel funktioniert. Ich denke, Sie können dort ein oder zwei Dinge lernen
quelle
Die Debugger-Option könnte nützlich sein.
Nach dem Erstellen des Kernels mit der Debugger-Option können noch einige Beispiel-Testanwendungen geschrieben werden, die verschiedene Systemaufrufe aufrufen, die den Kernel aufrufen. Sie können jeweils einen Teil des Kernel-Codes durchgehen und dessen Implementierung verstehen.
quelle
Matt Might empfahl im Abschnitt "Betriebssysteme" des Artikels " Was jeder Major der Informatik wissen sollte" die Linux-Kernel-Entwicklung von Love . Obwohl dies ein fortgeschrittenes Thema ist, ist das Buch sehr gut geschrieben.
quelle
Eine Möglichkeit, eine komplexe Codebasis zu erlernen, besteht darin , sie in einem Debugger auszuführen und zu sehen, wohin die Dinge Sie führen. Für Linux gibt es den Linux Kernel Debugger .
quelle