Struttura del corso
Introduzione
- breve storia di GNU/Linux
- licenze
- versionamento del kernel
- ciclo di rilascio
- alberi del kernel
- mainline
- kernel vs. spazio utente
- meccanismo vs. politica
- alternative ai driver del kernel
- RTOS vs. Linux
Gestione della Memoria
- memoria virtuale vs. fisica
- allocazione di memoria nel kernel
- pagine
- zone
- API
- slab
Patch del Kernel
- ciclo di vita
- git
- sorgenti del kernel
- creazione della patch
- verifica della patch
- correzione della patch
- invio della patch
- codice audited
Moduli del Kernel
- ottenere le sorgenti del kernel
- configurazione/compilazione/installazione
- driver di dispositivi (collegati staticamente, caricati in runtime)
- init/exit
- licenze
- EXPORT SYMBOL GPL
- makefile fuori dall'albero
- module-init-tools
- modulo nell'albero del kernel
- Kconfig
- passaggio di parametri
- sparse
Driver a Caratteri
- 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
-
driver a caratteri
- inizializzazione
- registrazione
- apertura, rilascio
- cdev, cdev add, cdev del,...
- numeri major/minor
- udev, udevmonitor, udevadm
Operazioni Avanzate di Driver a Caratteri
- ioctl
- unlocked ioctl
- compat ioctl
- API spazio utente
- API spazio kernel
- ciclo di vita del processo
- sonno/blocco
- sonno/risveglio
- coda di attesa
- thundering herd
- poll/select
Debugging del Kernel
- debugging
-
debug del kernel
- ricerca binaria con git
- supporto di debug dal kernel
- printk syslogd, klogd, loglevels, limiti di rate, livelli di debug, sottosistemi di debug selettivi
- debugging attraverso la query a debugfs
- debug degli oops, asserzioni di oops
- Magic SysRq Key
- kgdb/kdb
- JTAG
Tracciamento
- gcov
- lcov
- oprofile
-
ftrace
- tracciamento nop
- tracciamento di funzione
- tracciamento di switch sched
- tracciamento del grafico delle funzioni
- tracciamento dinamico
- trace-cmd/kernelshark
- perf
- LTTng
Interruzioni
- interruzioni vs. polling
- interruzione
- sezioni di programma
- rintracciabilità
- eventi
- gestore di interruzioni
- gestore di interruzioni condiviso
- flusso delle interruzioni
- controllo delle interruzioni
Deferenza del Lavoro
- top/bottom halves
- softirqs
- tasklets
- code di lavoro
- interruzioni a thread
Concorrenza
- regione/sezione critica
- atomico
- condizione di corsa
- sincronizzazione
- blocco
- soluzioni di blocco
- deadlock
- contesa
- cosa bloccare?
-
cosa si può usare?
- operazioni atomiche
- spin locks
- reader-writer spin locks
- semaforo
- semaforo binario
- mutex
- reader-writer semaphore
- variabili di completamento
- lock sequenziali
- disabilitazione della prelazione
- ordinamento e barriere
Tempo
- HZ
- Jiffies
- ritardi grandi/piccoli
- timer del kernel
I/O Hardware
- Porte I/O
- Memoria I/O
- Come gestire gli effetti collaterali nell'accesso ai registri?
Comunicazione User-Kernel
- put(get)_user()
- copy to(from)_user()
- I/O del kernel
- mappatura della memoria
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Portabilità
- dimensione delle parole
- tipi opachi
- char firmato/non firmato
- allineamento dei dati
- promozione integrale
- riutilizzo del codice
- endianess
- tick di sistema
- dimensione della pagina
- ordinamento delle istruzioni
- SMP/prelazione/memoria alta
Salvo diversa indicazione, il contenuto e questo programma di corso sono licenziati sotto Attribuzione-Non commerciale-Condividi allo stesso modo 4.0 Internazionale (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 da riga di comando
- Conoscenze di base dello sviluppo in spazio utente / applicazioni
- Conoscenza intermedia della programmazione C
- Dovrebbe aver partecipato a Architettura dei Sistemi GNU/Linux Embedded (fortemente consigliato!) e/o avere una buona comprensione degli argomenti trattati lì
Recensioni (5)
Informazioni aggiuntive molto utili
Grzegorz - Comp S.A.
Corso - BLoC Pattern
Traduzione automatica
Edward è un ottimo facilitatore
Zibusiso Ncube - Agricatural Research Council
Corso - Ionic 4 and Angular for Developers
Traduzione automatica
La conoscenza di Miguel del soggetto era estesa. Ha reso l'addestramento facile da comprendere e il flusso era bilanciato; aggiungendo nuove funzionalità a ogni sezione quando necessario. Ha coperto tutto ciò che era stato richiesto e ha risposto a ogni domanda in modo esaustivo. È stata un'esperienza molto piacevole.
Paul Coaton - SEMPCheck Services
Corso - Flutter Development Bootcamp with Dart
Traduzione automatica
Che l'instruttore si adatti alle nostre esigenze
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Corso - The Yocto Project - An Overview - hands-on
Traduzione automatica
Il formatore era entusiasta, gentile e amava l'argomento
Isaac Murphy - Royal New Zealand Airforce
Corso - Build Native iOS and Android Apps with Flutter
Traduzione automatica