Réf : LINUX_03
Durée : 4 jours
Objectif de la formation
Ce stage aborde l'ensemble des problématiques temps réel en environnement GNU/Linux, des couches basses du noyau jusqu'aux applications utilisateur. Les API Linux et POSIX-RT sont étudiées.
Les travaux pratiques intègrent l'utilisation des outils de l'environnement GNU/Linux pour la mise au point et l'analyse du temps-réel.
Public visé : Développeurs souhaitant utiliser Linux pour des applications temps réel.
Pré-requis : connaissance de la programmation Linux utilisateur et système.
Sommaire
Les problématiques du Temps Réel
• Définitions et concepts
• Systèmes « classiques » contre systèmes temps-réel : les différences, les limites
• Latence vs débit
• Illustrations
Présentation de GNU/Linux
• Bref historique
• Architecture générale du noyau
• Configurer et installer Linux
• Prise en charge croissante de la problématique temps-réel
Fonctionnement du noyau
• Mode utilisateur, mode noyau
• Contextes d'exécution
• Le temps système dans Linux
• Mécanismes d'interruptions
• Processus et tâches : cycle de vie, priorités.
• Les ordonnanceurs
• Verrous et préemption du noyau.
• L'architecture des drivers
• Gestion de la mémoire
• Les appels systèmes
• Systèmes mutli-processeurs
• Systèmes embarqués et optimisation de la consommation
Linux et la mesure du temps
• Horloges et temps système
• Les timers et la génération d'événements
• Les timers de haute résolution
• Résolution et précision
• Les registres de performances
API noyau et API utilisateurs POSIX.
Le temps-réel dans Linux
• Historique de intégration progressive du TR dans le noyau Linux.
• Limites actuelles de vanilla-Linux
• Présentation du Patch-RT
• Patch-RT et interruptions
• Patch-RT et ordonnancement
• Exemples
• Limitations
• Le futur : ordonnanceur EDF.
Concevoir temps réel en mode utilisateur
• La programmation temps-réel dans l'espace utilisateur.
• APIs Linux
• API Posix RT
• Tâches, priorités, signaux, timers, mutex.
Concevoir temps réel en mode noyau
• La programmation temps réel dans l'espace noyau
• Les tâches dans le noyau
• Drivers, interruptions et temps réel
• Softirqs, tasklets, workqueues...
• Gestion de la concurrence
Mise au point des applications temps-réel
• Optimiser le noyau pour le temps réel
• Configurer, utiliser les mécanismes d'analyse statistiques du noyau
• Détection, localisation et analyse des latences et des verrous.
• Outils système utiles pour l'analyse des caractéristiques temps-réel
Approches alternatives
• présentation des architectures alternatives: virtualization, hyperviseurs,micro-kernel
• Rtai, xenomai, rt-linux, montavista...
• présentation des principes et des APIs.
Travaux Pratiques :
• Préparation, configuration et installation d'un noyau Linux temps-réel avec le patch-RT
• Ecriture de tâches périodiques en espace utilisateur, puis en espace noyau.
• Manipulation d'outils systèmes variés.
• Manipulation des attributs temps réel de la tâche (priorités, ordonnancement).
• Ecriture d'un gestionnaire d'interruption temps-réel dans l'espace noyau.
• Mesure et analyse des jitters et latence : utilisation des outils statistiques du noyau.
• Comparaison du comportement temps réel entre un noyau classique et un noyau optimisé pour le temps réel.