Basi teoriche per lo sviluppo del kernel (Linux)

-1

KernelDevViewpoint (una fonte apparentemente seria) rende lo sviluppo del kernel simile a un'arte accessibile. Secondo loro:

Contrary to popular belief, kernel developers rarely need to know math at the calculus level. You need to be good at basic arithmetic and you must know Boolean algebra to work on device drivers.

One skill that many kernel developers learn on the job is the ability to build state machines in your head of what the code is doing. (...)

e

Technical skills for kernel developers include experience with the C programming language, and knowledge of Git.

Questa è la base dello sviluppo del kernel? Aritmetica di base, algebra booleana, C e Git?

Ovviamente, non mi aspetto di leggere "C in dieci giorni" (o qualsiasi altro libro simile) e iniziare a contribuire allo sviluppo del kernel Linux, tuttavia, mi chiedo quanto sarà difficile ottenere le competenze per farlo?

    
posta Quora Feans 27.11.2013 - 00:45
fonte

2 risposte

1

Is that the basis of kernel development? Basic arithmetic, Boolean algebra, C and Git?

Non ho mai contribuito a un progetto del kernel, ma a meno che tu non stia lavorando su certe parti come i lock di threading, la sicurezza, ecc. non hai bisogno di matematica avanzata. Hai sicuramente bisogno di sapere come lavorare con gli altri, comunicare in modo efficace e utilizzare un sistema di controllo della versione con un repository pubblico, ad es. Idiota. Dovrai imparare l'ethos del gruppo e aspettarti di ricevere critiche costruttive. Il test delle unità è importante per i progetti che faccio ed è il test unitario e la documentazione che richiedono la maggior parte del tempo.

Su molti progetti non ci si aspetta di avere la possibilità di commettere aggiornamenti al progetto senza passare attraverso uno o più livelli di recensioni. Devi guadagnare fiducia dimostrando le tue abilità. Su progetti di grandi dimensioni non ci si aspetta di padroneggiare tutto il codice, molto probabilmente diventerai bravo in una sezione su cui lavori e nel tempo impari altre parti. Vedrai molti stili e livelli di abilità diversi a meno che non abbiano una buona serie di standard da seguire.

Come puoi vedere ci sono molti controlli e contrappesi nei buoni progetti ed è molto più che una semplice codifica. Se pensi di poter dare un contributo, apporta una modifica e invia l'aggiornamento. Aspettatevi di essere respinti all'inizio, poi ascoltate i commenti, apportate le modifiche e presto potreste diventare parte della squadra. Ci vorrà molto del tuo tempo.

    
risposta data 27.11.2013 - 01:07
fonte
0

Anche se la fonte è rispettabile. Direi che è una grossolana generalizzazione dire che hai solo bisogno di aritmetica di base, algebra booleana, C e Git. Quando vedi il codice, quasi tutto è stato ridotto a codice C semplice e semplice. Ma il codice implementa qualcosa che è molto più complesso di, per esempio, l'aritmetica di base. Alcuni esempi:

  1. emulazione floating point. Linux è iniziato su i386 che non aveva fpu. Qualcuno ha scritto un'emulazione per fpu che include la geometria.
  2. Analisi dell'algoritmo. Ad un certo punto, qualcuno ha proposto un allocatore di memoria ad albero AVL. Perché qualcuno dovrebbe farlo? Perché per bilanciare l'albero ci vuole O (1) in media e O (log n) al massimo. Prende più della semplice matematica per capirlo.
  3. Non su linux. Vedi link per vedere come vengono utilizzati i metodi formali nello sviluppo di un kernel.
risposta data 27.11.2013 - 01:34
fonte

Leggi altre domande sui tag