LINUX - Programmation utilisateur

(ref.003346A)

4 jours - 28 heures

Objectifs

  • 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

Partenaires

Prérequis

  • Expérience en programmation C
  • Connaissance de base des systèmes d'exploitation et des techniques de debug
  • Connaissance des mécanismes des processeurs ou des micro-contrôleurs

Configurations

  • Les travaux pratiques sont fait sous un environnement Linux

Contenu

Linux et Temps-réel

Espace Utilisateur, Espace Noyau

Appels Système

Licences

Configuration noyau

Construction noyau

Images noyau

La Bootline

Le Root Filesystem

Demarrage d'une application après le boot du noyau

gdb, remote gdb

Répertoire /proc

Outils de traçage

Commandes fichiers

Commandes process

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

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

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

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

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

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é

Mémoire partagée

La file d'attente message System V

Les pipes

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

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)

Généralités sur TCP/IP

Sockets UDP

Sockets TCP

Sockets IP (RAW)

Options des sockets

Lecture/écriture de fichiers sur le root filesystem

Ecriture d'une communication point à point avec TCP

Ecriture d'une communication broadcast avec UDP

Notes

  • Les supports de cours seront fournis sur papier ou en format électronique à chaque participant pendant la formation