¿Cómo entender el código fuente del kernel de Linux para un principiante? [cerrado]

12

Soy un estudiante interesado en trabajar en la administración de memoria, particularmente en el componente de reemplazo de página del kernel de Linux.

¿Cuáles son las diferentes guías que pueden ayudarme a comenzar a comprender la fuente del núcleo?

He tratado de leer el libro Comprender el administrador de memoria virtual de Linux por Mel Gorman y Comprender el kernel de Linux por Cesati y Bovet, pero no explican el flujo de control a través del código. Solo terminan explicando varias estructuras de datos utilizadas y el trabajo que realizan varias funciones. Esto hace que el código sea más confuso.

Mi proyecto trata de ajustar el algoritmo de reemplazo de página en un núcleo convencional y analizar su rendimiento para un conjunto de cargas de trabajo. ¿Hay un sabor del núcleo de Linux que sería más fácil de entender (si no es el núcleo de Linux-2.6.xx)?

mosquito
fuente
1
¿Puedo preguntar por qué elegiste hacer la programación del kernel, cuando no te resulta fácil encontrar el código complejo?
LennyProgrammers

Respuestas:

13

Centrarse en las estructuras de datos . Comprender las estructuras de datos suele ser más importante que el código.

Si solo se muestran estructuras de datos pero no hay código, aún se obtiene una visión general del sistema.

Viceversa, si solo se muestra el código pero no las estructuras de datos, es muy difícil entender el sistema.

"De hecho, afirmaré que la diferencia entre un mal programador y uno bueno es si considera que su código o sus estructuras de datos son más importantes. Los malos programadores se preocupan por el código. Los buenos programadores se preocupan por las estructuras de datos y sus relaciones". -- Linus Torvalds

"Muéstrame tus diagramas de flujo y oculta tus tablas, y seguiré desconcertado. Muéstrame tus tablas, y generalmente no necesitaré tus diagramas de flujo; serán obvios". - Fred Brooks.

Maglob
fuente
4

Kernel Newbies es bastante bueno, supongo

Hay muchas personas interesadas en aprender cómo funciona el núcleo, creo que es posible que aprendas una o dos cosas allí.

Mahmoud Hossam
fuente
3

La opción del depurador podría ser útil.

Algunas cosas más que se pueden hacer después de construir el kernel con la opción del depurador es escribir algunas aplicaciones de prueba de muestra llamando a varias llamadas del sistema que invocarán el kernel y puede atravesar una pieza de código del kernel a la vez y comprender su implementación.

Saroj Panda
fuente
0

Una forma de aprender una base de código compleja es ejecutarla en un depurador y ver a dónde te llevan las cosas. Para Linux existe el depurador del kernel de Linux .

LennyProgrammers
fuente
No estoy seguro de que esto funcione para alguien que todavía está intentando saber qué hacer con este gigantesco código y cómo hace las cosas
Mahmoud Hossam
1
He hecho este enfoque con enormes bases de código. Sin embargo, necesita un punto de entrada y una idea de qué buscar.
LennyProgrammers
Sí, eso es lo que quise decir, él necesita saber qué buscar primero antes de depurar el núcleo
Mahmoud Hossam