Come capire il codice sorgente del kernel Linux per un principiante? [chiuso]


12

Sono uno studente interessato a lavorare sulla gestione della memoria, in particolare il componente di sostituzione della pagina del kernel Linux.

Quali sono le diverse guide che possono aiutarmi a capire la fonte del kernel?

Ho provato a leggere il libro Comprendere il gestore della memoria virtuale Linux di Mel Gorman e Comprendere il kernel Linux di Cesati e Bovet, ma non spiegano il flusso di controllo attraverso il codice. Finiscono solo per spiegare le varie strutture di dati utilizzate e il lavoro svolto da varie funzioni. Questo rende il codice più confuso.

Il mio progetto si occupa di modificare l'algoritmo di sostituzione della pagina in un kernel mainstream e di analizzarne le prestazioni per una serie di carichi di lavoro. C'è un sapore del kernel Linux che sarebbe più facile da capire (se non il kernel Linux-2.6.xx)?


1
Posso chiederti perché hai scelto di fare la programmazione del kernel, quando non ti senti facile a trovare il modo di aggirare il codice complesso?
LennyProgrammers,

Risposte:


13

Concentrarsi sulle strutture di dati . La comprensione delle strutture di dati è generalmente più importante del codice.

Se ti vengono mostrate solo strutture di dati ma nessun codice, otterrai comunque il quadro generale del sistema.

Viceversa, se mostrato solo codice ma non strutture di dati, è molto difficile capire il sistema.

"In effetti, affermerò che la differenza tra un cattivo programmatore e uno buono è se considera il suo codice o le sue strutture di dati più importanti. I cattivi programmatori si preoccupano del codice. I buoni programmatori si preoccupano delle strutture di dati e delle loro relazioni." - Linus Torvalds

"Mostrami i tuoi diagrammi di flusso e nascondi i tuoi tavoli, e io continuerò a essere sconcertato. Mostrami i tuoi tavoli e di solito non avrò bisogno dei tuoi diagrammi di flusso; saranno ovvi." - Fred Brooks.


4

Kernel Newbies è abbastanza buono, immagino

Ci sono molte persone interessate a sapere come funziona il kernel, penso che potresti imparare qualcosa o due lì


3

L'opzione debugger potrebbe essere utile.

Altre cose che possono essere fatte dopo aver compilato il kernel con l'opzione debugger sono scrivere alcune applicazioni di test di esempio che chiamano varie chiamate di sistema che invocheranno il kernel e si può attraversare un pezzo di codice del kernel alla volta e comprenderne l'implementazione.



0

Un modo per imparare una base di codice complessa è eseguirla in un debugger e vedere dove ti portano le cose. Per Linux esiste il debugger del kernel Linux .


Non sono sicuro che funzionerà per qualcuno che sta ancora provando cosa fare con questo gigantesco pezzo di codice e come funziona
Mahmoud Hossam,

1
Ho fatto questo approccio con enormi basi di codice. Tuttavia, hai bisogno di un punto di accesso e di un'idea di cosa cercare.
LennyProgrammers,

Sì, questo è ciò che intendevo, ha bisogno di sapere cosa cercare prima di eseguire il debug del kernel
Mahmoud Hossam,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.