Formation noyau Linux¶
Résumé
Cette formation comprends une partie théorique sur le fonctionnement interne du noyau et une mise en pratique à l’aide d’exercices simples et le développement d’un driver.

Programmation Linux noyau
Outils de développement
Débuguer avec GDB, KGDB, Ltt…
L’environnement de compilation du noyau et des modules
Kbuild et Kconfig
L’initialisation
Le chargement du noyau
Points d’entrée du BSP
Utilisation d’un Device Tree
Securisation du noyau, Module signing, lockdown
Eléments essentiels de programmation noyau
Qu’est-ce qu’un process, un thread
L’ordonnancement des threads
Contexte de thread et contexte d’interruption
Les processeurs multi-scalaires, pipelines et barrières
La gestion des caches
Cache et synchronisation mémoire
L’influence des caches sur l’ordonnancement, cluster scheduler, POSIX
L’influence des caches sur l’écriture d’applications multi-thread
Optimisations, Cache Allocation Technilogy, Tightly Coupled Memory
Topologies multi-processeur et multi-coeur, les spinlocks
La synchronisation des threads
Les wait-queues et les works
Les mutex et les completion
Gestion mémoire
Les architectures mémoire uniformes et non-uniformes (UMA/NUMA)
NUMA et ordonnancement
NUMA et périphériques
Mémoire physique et mémoire virtuelle: la MMU
Allocation mémoire dans le noyau kmalloc et vmalloc
Optimisations par les slabs et les pools
Spécificités liées aux multi-processeur
Gestion de la mémoire utilisateur
Linux Device Driver Framework
Le coté objet de Linux, kobjects, kref
Qu’est-ce qu’un Bus, un device, un drivers ou une classes
Le hotplug
Les spécificités architecturales, le PCI
L’accès au matériel
La notion de temps dans le noyau, les horloges
Les timers, timeout et les timers haute résolution
La gestion des interruptions, les tasklet et les softirq
DMA Direct Memory Access, IOMMU et synchronisation de cache
Différents types de périphériques
Les Périphériques caractères
Ecriture d’un pilote de périphérique en mode caractère
Les callbacks de la file_operations
Extensions de l’interface d’enregistrement d’un device
Le device misc
Les disques
Les périphériques bloc
Les elevators
Interfaces et protocoles réseau
Gestion des interfaces réseau sous Linux
Les socket buffers skbuf
Implémentation et options de la pile IPv4 sous Linux
Autres drivers
Gestionnaire de périphérique USB
Input Subsystem
Les GPIO
L’interface cryptographique