lettura e comprensione del codice c

8

Voglio capire il codice del kernel di Linux, e l'ho visto, ma non sono in grado di comprendere appieno ciò che sta accadendo (mi sto concentrando sulla parte di rete del kernel di Linux), quindi chiunque può suggerisci buone pratiche di lettura del codice C (o di qualsiasi altro lang) in generale e specifico per la parte di rete del kernel linux. Grazie in anticipo

    
posta davidhaskins 24.02.2011 - 07:41
fonte

3 risposte

10

Se hai bisogno di imparare C leggendo prima, allora il kernel Linux non è il punto in cui iniziare: è un programma piuttosto atipico di basso livello (anche se ho trovato che è abbastanza ben strutturato).

Piuttosto, guarda il codice sorgente per qualche programma di utilità BSD, ad es. quelli in OpenBSD . Leggi la sua manpage per una specifica semi-formale e di alto livello del programma.

Copia una copia della lettura del codice e / o di Kernighan e Pike Pratica di programmazione .

Infine, leggi un buon libro sugli interni del kernel Unix o Linux e inizia a leggere il kernel. (Ho trovato il Design del sistema operativo Unix di Maurice J. Bach (circa 1986) per essere ancora un buon inizio, anche per Linux.)

    
risposta data 24.02.2011 - 08:00
fonte
1

Quello che mi ha stupito nel vedere quando ho provato a fare la stessa cosa (che vuoi fare) è trovare così pochi commenti pertinenti (se ce ne sono) in un codice così complesso.

La documentazione dovrebbe essere il codice, giusto, ma la funzione commenti esiste nel linguaggio di programmazione C per un motivo.

Se sono stati rimossi, probabilmente è anche per un motivo: tenerti lontano.

Dubito sinceramente che tutti gli sviluppatori del kernel debbano lavorare su questo code-base ripulito e il mio punto di vista è che (almeno) l'autore di una determinata "caratteristica" del kernel (come epoll, per il bene del discussione) mantiene una versione privata del codice CON tutti quei commenti mancanti.

Perché credo che questo?

Un importante sviluppatore del kernel, cercando di convincermi a rilasciare il codice sorgente del server G-WAN come open-source, mi consigliò di "renderlo il più difficile possibile da leggere".

Ha aggiunto che questa tattica ha funzionato meravigliosamente per lui durante decenni in tutti i suoi progetti "open-source".

Mantenere la presa su qualsiasi aspetto critico di un progetto "open-source" ampiamente utilizzato crea ovviamente opportunità quando le entrate derivano esclusivamente dalla consulenza.

Quindi, tornando alla tua domanda, la cosa più utile che puoi fare per capire questo codice è studiarlo passo dopo passo e AGGIUNGERE i commenti mancanti.

Quindi, progressivamente, inizierà a dare un senso (e scoprirai perché i commenti sono stati rimossi).

    
risposta data 24.02.2011 - 08:00
fonte
0

Ciò che a volte mi aiuta è il debugging del codice. La visualizzazione dei dati reali e dei percorsi effettivi tendono a renderlo più comprensibile per me. Come sottolineato da altri membri, il codice del kernel di Linux è un pessimo punto di partenza per capire c.

    
risposta data 24.02.2011 - 15:50
fonte

Leggi altre domande sui tag