Formation - LINUX programmation utilisateur (reference 003346A)
 
    Formations connexes
   
           
    Pré-requis
  • Expérience en programmation C
  • Connaissance de base des systèmes d'exploitation et des techniques de debug
   
             
  Objectifs de la formation
  • Comprendre comment implémenter une application multi-process et multi-thread dans l'espace utilisateur d'un noyau Linux embarqué
  • Le cours est divisé en présentations et travaux pratiques. Les travaux pratiques permettent de mieux comprendre le contenu des présentations
  • Configurer et construire une image noyau Linux
  • Comprendre les differents types de root filesystems
  • Démarrer une application après le boot du noyau
  • Utiliser les outils de debug pour debugger une application en mode utilisateur
  • Comprendre les différences entre les process et les threads et organiser les fonctions à travers les deux mecanismes
  • Comprendre la gestion de la mémoire en mode Linux utilisateur.
  • Utiliser l'allocation de mémoire dynamique et la mémoire partagée
  • Utiliser les mécanismes "timer" pour plannifier les tâches périodiques, les événements datés
  • Comprendre les differents mécanismes de synchronisation et d'exclusion mutuelle de l'espace utilisateur
  • Utiliser les mécanismes de file d'attente message pour la communication inter-tâche
  • Comprendre les mécanismes d'Entree/Sortie
  • Utiliser les interfaces de connexion pour les communications TCP, UDP et IP
   
           
    Durée
  • 4 jours
   
           
    Programme

[Jour 1]

Introduction

  • Linux et Temps-réel
  • Espace Utilisateur, Espace Noyau
  • Appels Système
  • Licences

Installation, Compilation et Boot du noyau Linux

  • Configuration noyau
  • Construction noyau
  • Images noyau
  • La Bootline
  • Le Root Filesystem
  • Demarrage d'une application après le boot du noyau

Debug

  • gdb, remote gdb
  • Répertoire /proc
  • Outils de traçage

Commandes shell de base

  • Commandes fichiers
  • Commandes process

Travaux pratiques

  • Configuration et compilation du noyau Linux
  • Boot du noyau sur la plateforme cible
  • Lancement d'un application au boot
  • Utilisation d'un root filesystem en RAM et d'un root filesystem monté NFS
  • Debug d'une application

[Jour 2]

Process et Thread

  • Définition des process et threads
  • Création de process
  • Plannification de process
  • Création de thread
  • Plannification de Thread
  • APIs Posix API (1003.1b, 1003.1c, 1003.1d)
  • API System V (IPC System V)
  • Gestion des erreurs d'appel système
  • Gestion des exceptions

Gestion mémoire

  • Organisation mémoire d'un process
  • Mémoire partagée, mémoire locale (pour process et threads)
  • API System V pour gestion de la mémoire partagée
  • Verrouillage mémoire
  • Organisation d'un descripteur de fichier en mémoire (mmap, ...)
  • Allocation dynamique de la mémoire

Travaux pratiques

  • Creation d'une application multi-process
  • Partage de variables entre process à travers la mémoire partagée
  • Creation d'une application multi-thread
  • Ecriture d'une procédure réentrante
  • Allocation mémoire

[Jour 3]

Gestion Signaux et Timing

  • Signaux Posix et BSD
  • Signal asynchrone and synchrone
  • Masquage signaux
  • Le timer BSD
  • Attente pendant un délai
  • Mesure de performance
  • Gestion Date et Heure

Synchronisation et exclusion mutuelle

  • Le problème de la synchronisation
  • Le problème de l'exclusion mutuelle
  • Le sémaphore de comptage Posix 1003.1b
  • Le mutex Posix 1003.1c
  • La variable de condition Posix 1003.1c
  • Inversion de priorité
  • Deadlock
  • Protocole à plafond de priorité

Passage de message

  • Mémoire partagée
  • La file d'attente message System V
  • Les pipes

Travaux pratiques

  • Ecriture d'une process périodique
  • Démarrage d'une routine asynchrone dans un process avec un signal
  • Synchronisation de tâches avec des sémaphores
  • Protection d'une structure de données partagées avec un Mutex
  • Ecriture d'un mécanisme client-server avec une file d'attente message

[Jour 4]

Entrée / Sortie

  • La couche standard Posix
  • Les appels open, read, write, close, ioctl
  • Verrouillage de fichiers
  • E/S Asynchrones
  • L'appel select
  • La couche ANSI stream (stdio)

Réseau TCP/IP

  • Généralités sur TCP/IP
  • Sockets UDP
  • Sockets TCP
  • Sockets IP (RAW)
  • Options des sockets

Travaux pratiques

  • Lecture/écriture de fichiers sur le root filesystem
  • Ecriture d'une communication point à point avec TCP
  • Ecriture d'une communication broadcast avec UDP
   
           
    Documentation

Les supports de cours sont donnés aux participants. Précis et faciles à utiliser, ils peuvent servir de référence par la suite.
Le listing des exercices est également fourni aux participants.
   
           
    Autres formations

Pour connaître les autres formations que nous proposons ainsi que leurs contenus, vous pouvez consulter ou télécharger notre catalogue de formations sur la page suivante : Formation - présentation générale