Struttura del corso

Introduzione

    breve storia di GNU/Linux Licenze Controllo delle versioni del kernel Ciclo di rilascio alberi del kernel linea principale kernel vs. spazio utente Meccanismo vs. politica alternative ai driver del kernel RTOS vs. Linux

Memorie Management

    Memoria virtuale vs. memoria fisica Allocazione della memoria nel kernel Pagine Zone API lastra

Kernel Patch

    ciclo vitale Git sorgente del kernel Crea patch Controlla la patch Correggi la patch toppa per nave Codice verificato

L'edizione 2016 degli Stati Uniti

    Ottenere i sorgenti del kernel Configurare/Compilare/Installare driver di periferica (collegati staticamente, caricati in fase di esecuzione) init/exit Licenze ESPORTA SIMBOLO GPL Makefile fuori dall'albero module-init-tools modulo nell'albero del kernel Kconfig Passaggio di parametri rado

Char Drivers

    architettura Interfaccia utente/kernel Sottosistema I/O VFS sysfs (dispositivi, bus, driver, classi), kobject/ktype/kset Modello di driver del kernel Linux File di dispositivo char driver inizializzazione registrazione aprire, rilasciare cdev, cdev add, cdev del,... Numeri maggiori/minori udev, udevmonitor, udevadm

Operazioni avanzate del driver Charachter

    ioctl IOCTL sbloccato compat ioctl API dello spazio utente API dello spazio kernel Ciclo di vita del processo Dormire/Bloccare dormire/svegliarsi coda d'attesa Mandria tonante Sondaggio/Selezione

Debug del kernel

    insetto Debug debug del kernel Ricerca binaria con git Supporto per il debug dal kernel printk syslogd, klogd, loglevels, limite di velocità, livelli di debug, sottosistemi selettivi di debug Debug tramite query su debugfs debug oops, asserzione oops Chiave Magic SysRq KGDB/KDB JTAG

Tracciatura

    GCOV LCOV oprofilo ftrace Tracciante NOP tracciatore di funzioni Tracciatore di interruttori Sched Tracciatore del grafico delle funzioni tracciante dinamico
trace-cmd/kernelshark
  • Perf
  • LTTng
  • Interrompe
  • interrupt e polling interrompere Sezioni del programma rientro avvenimenti gestore di interrupt Gestore di interrupt condiviso Interrompere il flusso Controllo dell'interrupt

      Posticipare il lavoro

    metà superiore/inferiore softirqs Tasklet Code di lavoro Filettato Interrrupts

      Concorrenza

    Regione/sezione critica atomico Condizione di gara sincronizzazione frenaggio Soluzioni di chiusura impasse contesa Cosa bloccare? Cosa si può usare? Operazioni atomiche Blocchi di rotazione Blocchi di rotazione lettore-scrittore semaforo semaforo binario mutex Semaforo lettore-scrittore Variabili di completamento Serrature sequenziali Disabilita l'interruzione per diritti di priorità Ordinamento e barriere

      Ore

    HZ Jiffies Ritardi grandi/piccoli Timer del kernel

      Hardware I/O

    Porte I/O Memoria I/O Come affrontare gli effetti collaterali accedendo ai registri?

      Kernel utente Communication

    put(get)_user() copia in(da)_user() Kernel I/O Mappatura della memoria PROCFS sysfs debugfs relèfs collegamento di rete ioctl

      Portabilità

    Dimensione della parola Tipi opachi char firmato/non firmato Allineamento dei dati Promozione integrale Riutilizzo del codice A questo punto, l'unica cosa che si segno di spunta del sistema Dimensione pagina Ordinamento delle istruzioni SMP/diritti di priorità/memoria elevata

      Salvo diversa indicazione, il contenuto e la struttura del corso sono concessi in licenza ai sensi di Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).

    Requisiti

    • Familiarità di base con l'uso di un sistema GNU/Linux come utente finale
    • Familiarità di base con una shell a riga di comando
    • Conoscenza di base dello spazio utente / sviluppo di applicazioni
    • Conoscenze intermedie di programmazione C
    • Aver già frequentato Embedded GNU/Linux Systems Architecture (fortemente raccomandato!) e/o avere una buona conoscenza degli argomenti ivi descritti
     35 ore

    Numero di Partecipanti



    Prezzo per Partecipante

    Recensioni (4)

    Corsi relativi

    The Yocto Project - An Overview - hands-on

    28 ore

    Categorie relative