Qual è un buon modo per imparare la programmazione multicore a livello di kernel in Linux? [chiuso]

3

Sono interessato alla programmazione multicore a livello di kernel. Mi aspetto che ciò influisca su molte aree ed è probabilmente diverso per ogni architettura. Quali sono alcuni devono leggere le sezioni del kernel? Se volessi confrontare e confrontare il codice per un Intel I7 e un ARM Cortex-A9 MPCore dove troverei le differenze?

    
posta DeveloperDon 07.10.2012 - 07:38
fonte

3 risposte

4

Per comprendere il supporto delle operazioni multicore fornito dai processori e utilizzato dai sistemi operativi, l'immersione nel codice potrebbe non essere il metodo ideale. Potrebbe essere importante capire prima cosa fa per ottenere un framework su cui appendere i molti pezzi che riguardano il modo in cui lo fa. Le specifiche riguardano il dominio del problema, il codice si occupa del dominio della soluzione e nella maggior parte dei sistemi esiste un processo di progettazione che fa una scomposizione orientata agli oggetti o funzionale per correlare i due.

Un modo per affrontare questa domanda è iniziare con la documentazione della teoria dell'operazione per l'architettura di interesse, greping per multicore o multiprocessore, due concetti che hanno una stretta affinità anche se ci sono alcune distinzioni legate all'implementazione, in particolare sul lato hardware . Per l'architettura Intel ho trovato alcune informazioni interessanti da Volume 2, Parte 2: Coerenza MP e sincronizzazione pagina 2: 507 del Intel®  Itanium®  Architettura Manuale dello sviluppatore del software

Da questo materiale, alcuni dei seguenti codici diventano molto più comprensibili.

Certamente non c'è alcun sostituto per leggere il codice, ma non c'è nemmeno un sostituto per la lettura dei manuali dei fornitori, in particolare quando si lavora con uno dei dispositivi più complessi del pianeta.

    
risposta data 15.10.2012 - 20:12
fonte
6

Non c'è nulla di speciale nella programmazione multicore in Linux. Devi capire l'intero kernel. Invece di porre domande specifiche, andare avanti e scaricare il codice sorgente Linux da kernel.org e passare attraverso il file README e la struttura del codice sorgente. (La tua domanda sul processo intel e arm viene risposta in README). Inizia a leggere il codice sorgente insieme a un buon libro del kernel di Linux.

    
risposta data 07.10.2012 - 15:01
fonte
3

Tutta la programmazione nel kernel è programmazione multi-core (nel senso che deve essere in grado di girare su più core). Quindi non c'è nulla di specifico in ciò che non si fa già per la codifica generale del kernel.

Le aree della programmazione del kernel relative ai sistemi multi-core sono il blocco, la programmazione e l'accesso alla memoria (NUMA se si è su quel tipo di macchina).

Ecco alcuni punti utili per iniziare:

risposta data 10.10.2012 - 01:20
fonte

Leggi altre domande sui tag