.. meta:: :description: Formation noyau Linux :keywords: Linux, kernel, noyau, driver, programmation Formation noyau Linux ********************* .. admonition:: 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. .. image:: img_tux.png :width: 300pt :align: center * 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