Détails
- 18 Sections
- 136 Lessons
- 28 heures
Expand all sectionsCollapse all sections
- Introduction au noyau11
- 1.1Tour d’horizon du système et du rôle du noyau
- 1.2Présentation des sites de référence
- 1.3Spécificités des noyaux 3.x et 4.x
- 1.4Cycles de développement du noyau, les patchs
- 1.5Mode de fonctionnement & appels système
- 1.6Organisation des sources
- 1.7Présentation du principe de compilation du noyau et des modules
- 1.8Dépendances & symboles
- 1.9Exportations de symboles
- 1.10Chargement du noyau
- 1.11Travaux pratiques : Compilation et installation d’un noyau 3.x.
- Introduction au noyau11
- 2.1Tour d’horizon du système et du rôle du noyau
- 2.2Présentation des sites de référence
- 2.3Spécificités des noyaux 3.x et 4.x
- 2.4Cycles de développement du noyau, les patchs
- 2.5Mode de fonctionnement & appels système
- 2.6Organisation des sources
- 2.7Présentation du principe de compilation du noyau et des modules
- 2.8Dépendances & symboles
- 2.9Exportations de symboles
- 2.10Chargement du noyau
- 2.11Travaux pratiques : Compilation et installation d’un noyau 3.x.
- Présentation des outils utilisables6
- 3.1Outils de développement
- 3.2Outils de débogage
- 3.3Environnement de débogage
- 3.4Outil de gestion de version
- 3.5Traçage des appels système
- 3.6Travaux pratiques : installation de l’ensemble des outils et des sources pour la conception d’un module. Paramétrage vers le chargement automatique de module au boot. Déploiement et test de modules simples
- Présentation des outils utilisables6
- 4.1Outils de développement
- 4.2Outils de débogage
- 4.3Environnement de débogage
- 4.4Outil de gestion de version
- 4.5Traçage des appels système
- 4.6Travaux pratiques : installation de l’ensemble des outils et des sources pour la conception d’un module. Paramétrage vers le chargement automatique de module au boot. Déploiement et test de modules simples
- Gestion des threads & scheduling7
- 5.1Tour d’horizon des types de périphériques
- 5.2Fonctionnement du noyau & protection des variables globales
- 5.3Représentation des threads
- 5.4Contexte d’exécution
- 5.5Scheduler de Linux et la préemption
- 5.6Création d’un thread noyau
- 5.7Travaux pratiques : conception d’un module de création de thread noyau lors de l’insertion et déchargement lors du rmmod. Ecriture d’un module d’horodatage d’événements à haute précision. Ecriture d’un module d’information sur les structures internes des processus.
- Gestion des threads & scheduling7
- 6.1Tour d’horizon des types de périphériques
- 6.2Fonctionnement du noyau & protection des variables globales
- 6.3Représentation des threads
- 6.4Contexte d’exécution
- 6.5Scheduler de Linux et la préemption
- 6.6Création d’un thread noyau
- 6.7Travaux pratiques : conception d’un module de création de thread noyau lors de l’insertion et déchargement lors du rmmod. Ecriture d’un module d’horodatage d’événements à haute précision. Ecriture d’un module d’information sur les structures internes des processus.
- Gestion de la mémoire & du temps et de proc15
- 7.1Gestion et organisation mémoire pour les architectures UMA et NUMA
- 7.2Espace d’adressage utilisateur et noyau
- 7.3Gestion de pages à la demande
- 7.4Allocations mémoire, buddy allocator, kmalloc, slabs et pools mémoire
- 7.5Gestion des accès à la mémoire
- 7.6Problèmes liés à la sur-réservation de la mémoire
- 7.7Gestion de la mémoire sur x86 et ARM, utilisation des Hugepages
- 7.8Optimisation des appels systèmes
- 7.9Synchronisations & attentes dans le noyau
- 7.10Ticks & Jiffies dans Linux
- 7.11Horloge temps réel, RTC (real Time Clock), implémentation des timers
- 7.12Interface timers haute résolution & estampilles
- 7.13Outils spécifiques au noyau, listes chaînées, kfifo et container_of
- 7.14Interface noyau avec /proc par le procfs
- 7.15Travaux pratiques : Usage des timers et des estampilles & implémentation d’un accès au procfs. Mise en œuvre de l’allocation mémoire dans le noyau et optimisation à l’aide des slabs.
- Gestion de la mémoire & du temps et de proc15
- 8.1Gestion et organisation mémoire pour les architectures UMA et NUMA
- 8.2Espace d’adressage utilisateur et noyau
- 8.3Gestion de pages à la demande
- 8.4Allocations mémoire, buddy allocator, kmalloc, slabs et pools mémoire
- 8.5Gestion des accès à la mémoire
- 8.6Problèmes liés à la sur-réservation de la mémoire
- 8.7Gestion de la mémoire sur x86 et ARM, utilisation des Hugepages
- 8.8Optimisation des appels systèmes
- 8.9Synchronisations & attentes dans le noyau
- 8.10Ticks & Jiffies dans Linux
- 8.11Horloge temps réel, RTC (real Time Clock), implémentation des timers
- 8.12Interface timers haute résolution & estampilles
- 8.13Outils spécifiques au noyau, listes chaînées, kfifo et container_of
- 8.14Interface noyau avec /proc par le procfs
- 8.15Travaux pratiques : Usage des timers et des estampilles & implémentation d’un accès au procfs. Mise en œuvre de l’allocation mémoire dans le noyau et optimisation à l’aide des slabs.
- Périphérique en mode caractère6
- 9.1Conception de pilotes de périphériques caractère
- 9.2Virtual File System
- 9.3Méthodes associées aux périphériques caractères
- 9.4Gestion des interruptions DMA & accès au matériel
- 9.5Enregistrement des pilotes de périphériques de type caractère et optimisations
- 9.6Travaux pratiques : rédaction progressive d’un pilote périphérique en mode caractère. Implémentation des synchronisations d’entrée-sortie entre threads et avec la routine d’interruption. Implémentation de l’allocation mémoire.
- Périphérique en mode caractère6
- 10.1Conception de pilotes de périphériques caractère
- 10.2Virtual File System
- 10.3Méthodes associées aux périphériques caractères
- 10.4Gestion des interruptions DMA & accès au matériel
- 10.5Enregistrement des pilotes de périphériques de type caractère et optimisations
- 10.6Travaux pratiques : rédaction progressive d’un pilote périphérique en mode caractère. Implémentation des synchronisations d’entrée-sortie entre threads et avec la routine d’interruption. Implémentation de l’allocation mémoire.
- Linux Driver Framework - sysfs7
- 11.1Introduction au framework
- 11.2Les objets drivers, device driver, bus et class
- 11.3Utilisation et génération des attributs présentés dans le sysfs
- 11.4Interface avec le hotplug, méthodes match, probe et release
- 11.5Gestion du firmware
- 11.6Gestion de l’énergie, méthodes de gestion de l’énergie
- 11.7Travaux pratiques : implémentation d’un bus, d’un driver et d’un device driver. Adaptation du pilote de périphériques caractère. Exemple d’utilisation de l’interface.
- Linux Driver Framework - sysfs7
- 12.1Introduction au framework
- 12.2Les objets drivers, device driver, bus et class
- 12.3Utilisation et génération des attributs présentés dans le sysfs
- 12.4Interface avec le hotplug, méthodes match, probe et release
- 12.5Gestion du firmware
- 12.6Gestion de l’énergie, méthodes de gestion de l’énergie
- 12.7Travaux pratiques : implémentation d’un bus, d’un driver et d’un device driver. Adaptation du pilote de périphériques caractère. Exemple d’utilisation de l’interface.
- Périphérique en mode bloc et systèmes de fichiers6
- 13.1Principe des périphériques en mode bloc & enregistrement du driver
- 13.2Callback de lecture et écriture & support du formatage et opérations avancées
- 13.3Présentation de l’ordonnanceur des entrées-sorties par bloc du noyau
- 13.4Conception des systèmes de fichiers
- 13.5Enregistrement d’un nouveau système de fichiers
- 13.6Travaux pratiques : exemple de pilote complet de périphérique virtuel. Exemple d’un système de fichiers personnalisé.
- Périphérique en mode bloc et systèmes de fichiers6
- 14.1Principe des périphériques en mode bloc & enregistrement du driver
- 14.2Callback de lecture et écriture & support du formatage et opérations avancées
- 14.3Présentation de l’ordonnanceur des entrées-sorties par bloc du noyau
- 14.4Conception des systèmes de fichiers
- 14.5Enregistrement d’un nouveau système de fichiers
- 14.6Travaux pratiques : exemple de pilote complet de périphérique virtuel. Exemple d’un système de fichiers personnalisé.
- Interfaces et protocoles réseau5
- Interfaces et protocoles réseau5
- Drivers pour périphériques USB5
- Drivers pour périphériques USB5