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.

../_images/img_tux.png
  • 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