it-swarm.it

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

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 Comprensione del gestore della memoria virtuale Linux di Mel Gorman e Comprensione del 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 tradizionale 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)?

12
user16867

Focus su strutture 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.

13
Maglob

Kernel Newbies è abbastanza buono, immagino

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

4
Mahmoud Hossam

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.

3
Saroj Panda

Nella sezione Sistemi operativi dell'articolo, Cosa dovrebbero sapere tutti i maggiori informatici , Matt Might ha raccomandato Linux Kernel Development by Love . Sebbene questo sia un argomento avanzato, il libro è scritto molto bene.

2
Anthony

Un modo per apprendere una base di codice complessa è eseguirlo in un debugger e vedere dove ti portano le cose. Per Linux esiste Linux Kugger Debugger .

0
LennyProgrammers