JDN > Formations professionnelles > Management, RH, Droits > Conduite de projet > Formation Programmation Temps-Réel et Multi-Core




Formation Programmation Temps-Réel et Multi-CoreInformations pratiquesCentre de formation ac6-formation

 Formation Programmation Temps-Réel et Multi-Core


 ac6-formation, COURBEVOIE
 Formation inter entreprise / intra entreprise


Objectif Comment éviter les pièges de la programmation temps réel et multi-processeur, en particulier sous Linux
* Découvrez les notions de multitâche temps réel
* Comprendre les problèmes liés aux CPUs multi-coeurs
* Maîtriser la programmation concurrente
* Sur le même processeur
* Sur un système multiprocesseur
* Comprendre les contraintes temps réel
* Déterminisme
* Préemption
* Interruptions
* Interactions avec l'architecture du processeur
* Cache
* Pipeline
* Optimisations
* Multi-core et Hyperthreading
* Débogage d'applications temps réel
* Comprendre la structure d'un noyau temps réel
Ce cours apprend à maîtriser la programmation temps réel et multi-tâches en comprenant comment résoudre efficacement les problèmes rencontrés en fonction des primitives disponibles sur l'OS utilisé.
Contenu Introduction au temps réel
* Les concepts de base du temps réel
* Les contraintes du temps réel et de l'embarqué
* Multi-tâches et temps-réel
* Multi-coeur et Hyperthreading
- Exercice : Installation de l'environnement de développement sur le système hôte (si nécessaire)
- Exercice : Installation de l'environnement d'exécution sur la cible
- Exercice : Création d'une routine de changement de contexte

Structures de données et parallélisme
* Nécessité des structures de données
* Structures de données et multi-tâches
* Les listes (simple ou double liens)
* Listes circulaires
* FIFOs
* Piles
* Preuves d'intégrité des structures de données
* Assertions
* Pré et post-conditions
- Exercice : Construction d'un gestionnaire de listes chaînées génériques utilisable en environnement parallèle

Gestion mémoire
* Les algorithmes de gestion mémoire
* Buddy system
- Exercice : Écriture d'un gestionnaire de mémoire système simple utilisant l'algorithme "buddy"
* Best fit
* First fit
* Gestion de pools
- Exercice : Écriture d'un gestionnaire de mémoire générique, multi-niveau
* Les erreurs mémoire
* Fuites mémoire
* Accès à de la mémoire non allouée ou déjà libérée
- Exercice : Amélioration du gestionnaire de mémoire pour la détection d'erreurs mémoire
* Surveillance des piles
- Exercice : Amélioration de la commutation de contexte pour surveiller l'utilisation de la pile

Les composants d'un système temps réel
* Les tâches et les descripteurs de tâches
* Contenu du descripteur de tâche
* Listes de descripteurs de tâches
* Changement de contexte
* Mécanismes d'ordonnancement et de préemption
* Ordonnancement avec ou sans tic d'horloge
* Modes d'ordonnancement et preuves d'ordonnançabilité
* Ordonnancement à priorités fixes
* Ordonnancement RMA et EDF
* Ordonnancements adaptatifs
- Exercice : Écriture d'un ordonnanceur simple, à priorités fixes

Gestion d'interruptions dans les systèmes temps-réel
* Besoin d'interruptions dans un système temps réel
* Interruptions de timer
* Interruptions de périphériques
* Notion d'interruption sur niveau ou sur front
* Acquittement matériel et logiciel
* Vectorisation des interruptions
- Exercice : Écriture d'un gestionnaire d'interruption simple
* Interruption et ordonnancement
- Exercice : Extension de l'ordonnanceur pour supporter un ordonnancement en ronde (round-robin)
* Affectation des interruptions aux processeurs
* Ordonnancement multi processeur
- Exercice : Étude d'un ordonnanceur multi-coeurs

Les primitives de synchronisation
* Mise en attente et réveil des tâches
* Sémaphores
- Exercice : Mise en œuvre des sémaphores par interaction directe avec l'ordonnanceur
* Exclusion mutuelle
* Spinlocks et masquage d'interruptions
* Mutex ou sémaphores
- Exercice : Mise en œuvre du mécanisme de mutex
* Mutex récursifs et non récursifs
- Exercice : Vérifier la bonne imbrication des mutex récursifs et l'utilisation de mutex non récursifs
* Le problème de l'inversion de priorité
* L'héritage de priorité (le mécanisme automagique)
* Le plafond de priorité (la réponse centrée sur la conception)
- Exercice : Mise en place du mécanisme de plafond de priorité
* Mutexes et variables condition
- Exercice : Ajout du support des variables condition aux mutex
* Les boites aux lettres

Solutions aux problèmes de parallélisme
* Les divers problèmes de la programmation parallèle
* Accès concurrent non maîtrisé
- Exercice : Le problème "producteur-consommateur", ou une illustration d'accès concurrents et sa solution
* Deadlocks (étreinte fatale)
* Livelocks (blocage vivant)
* Starvation (famine)
- Exercice : Le problème du "dîner des philosophes", illustration des risques de deadlocks, livelocks et de famine

Les Pthreads sous Linux
* Le standard pthread
* Threads
* Mutexes et variables condition
- Exercice : Résolution du problèmes des lecteurs et des écrivains avec des threads POSIX
* Variables spécifiques à un thread
- Exercice : Maintient de statistiques par thread pour le problème des lecteurs et écrivains
* Sémaphores POSIX
* Ordonnancement sous Linux
* Changements de contexte
* Politiques d'ordonnancement (temps réel, classique)
* Préemption

Multi-tâches dans le noyau Linux
* La gestion de mémoire du noyau
* Les algorithmes d'allocation de mémoire "buddy" et "slab"
* Gestion des tâches sous Linux
* Threads noyau Linux
* Création
* Terminaison
* Programmation concurrente dans le noyau
* Opérations atomiques
* Spinlocks
* Spinlocks en lecture/écriture
* Sémaphores et sémaphores en lecture/écriture
* Mutexes
* Verrous séquentiels
* Le mécanisme "Lecture/Copie/Mise-à-jour" (RCU)
- Exercice : Création d'un mécanisme de barrière d'exécution à partir des primitives de synchronisation du noyau Linux
* Les mécanismes de base de synchronisation de threads
* Les files d'attente
* Les événements de complétion
* Les timers matériels
* Clockevents
* Les timers logiciels
* Délais d'exécution
* Timers noyau
* Timers haute résolution
- Exercice : Création d'un évènement de synchronisation, à partir des mécanismes de synchronisation de base
Niveau requis * Bonne connaissance de la programmation C, si possible en environnement embarqué
* Compréhension de base de l'architecture des processeurs
Coût 2100 euros
Durée de la formation 5 jours

 

Mise à jour le 01 Mars 2011 
Mettre à jour | Envoyer cette fiche 


Rechercher
> Recherche avancée
> Toutes les formations
> Top des recherches
0-9|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z


Les informations contenues dans l'Annuaire des formations sont communiquées par les établissements concernés. Elles n'engagent en rien la responsabilité de l'éditeur du Journal du Net. © Benchmark Group


Rechercher une formation
Recherche avancée | Toutes les formations
Top des recherches


ENST Telecom Paris formation continue et professionnelle – Cegos
CNFCE ORSYS
Journal du Net Voir un exemple
Management Voir un exemple
Emploi Voir un exemple
Toutes nos newsletters

Annonces Google