+ +
- -
Systèmes d'Exploitation
Calendrier  Détails
Programmation
 
Calendrier  Détails
Processeurs ARM
 
Calendrier  Détails
Processeurs PowerPC
 
 
 
 
Calendrier  Détails
Communications
 
 
Calendrier  Détails
+ +
> >
- -

 
ac6 >> ac6-training >> Systèmes d'Exploitation >> Linux >> Programmation Linux Télécharger le catalogue Télécharger la page Ecrivez nous Version imprimable

D0 Programmation Linux

La programmation utilisateur sur Linux

La programmation utilisateur sur Linux
formateur
Objectifs
  • Découvrir Linux et ses outils de développement et de mise au point
  • Programmer et débugger des applications Linux
    • Programmation multi-tâches et temps réel
    • Communications inter-processus
    • Entrées-sorties
  • Linux et µClinux
Les exercices se font sur des cartes cibles :
•  Carte à base de processeur ARM9 d'Atmel, avec sonde JTAG Lauterbach.
•  Pour uClinux, carte à base de Cortex/M3 (STM32) de STMicroelectronics, avec sonde JTAG Lauterbach.
Nous utilisons le dernier noyau disponible sur www.kernel.org

Les exercices se font en utilisant l'environnement de développement intégré System Workbech for Linux - Basic Edition.

Matériel
  • Un PC Linux par binôme
  • Support de cours
  • CDROM avec documentation et exercices corrigés
Pré-requis
  • Connaissance de Linux utilisateur.
  • Connaissances générales en programmation C.

1er jour
Présentation & Architecture
  • Historique
  • Licences GPL et open source
  • Distributions et versions de Linux et uClinux
  • Architecture du kernel Linux et uClinux
Utilisation de Linux
  • Le système de fichier
  • Utilisation du shell et des scripts
  • L'éditeur vi
  • Administration de base
Le développement d'applications
  • Développement d'applications Linux
    • différence entre mode utilisateur et mode noyau
    • structure d'une application Linux
  • Développement d'applications uClinux
    • les formats d'exécutables uClinux
    • les options de compilation
  • Développement de librairies Linux
    • statiques (.lib)
    • dynamiques (.so)
  • Développement de librairies uClinux
    • statiques (.lib)
    • dynamiques (.so)
  • Outils de développement
    • les outils de compilation
    • la documentation (pages "man", info)
    • les makefile
    • environnements intégrés (Eclipse, Kdevelop,...)
  • Outils de debug et de mise au point
    • gdb
    • debug mémoire avec dmalloc et electric fence
    • analyse runtime complète avec Valgrind
Exercise :  Ecriture d'une librairie mathématique simple compilée statiquement puis dynamiquement pour Linux et uClinux
2ème jour
Entrées/Sorties et Signaux
  • Interface standard des entrées/sorties
    • API
    • inodes et données
    • verrous
  • Programmation réseau
    • sockets
    • protocoles UDP et TCP
Exercise :  Programmation d'une application client/serveur. Comparaison entre TCP/IP et UDP/IP.
  • Entrées-sorties asynchrones
    • mode non bloquant
    • E/S multiplexées
    • E/S notifiées
    • Asynchrone enchainé (API aio POSIX)
Exercise :  Gestion de plusieurs connexions concurrentes par multiplexage d'I/O
  • Signaux POSIX et timers
    • types de signaux
    • réception d'un signal
    • fonctions utilisables dans un gestionnaire de signal
    • timers en mode utilisateur
3ème jour
Programmation Multitâches
  • Les processus
    • définition
    • structures du noyau
    • sécurité
    • cycle de vie (fork, exec,...)
    • Différence entre Linux et uClinux
Exercise :  Gestion de plusieurs connexions concurrentes en multi processus (fork)
  • Les threads
    • définition (threads utilisateur et noyau)
    • threads POSIX (mutex, variables conditionnelles, Thread Specific Data,...)
Exercise :  Gestion de plusieurs connexions concurrentes en multitâches (pthreads)
  • Gestion mémoire
    • gestion de la mémoire par la MMU (adresses virtuelles/physiques)
    • pagination et protection
    • swap
    • allocation mémoire
    • caches
    • différences entre Linux et uClinux
  • Ordonnancement
    • la commutation de contexte
    • politique d'ordonnancement "normale" (niveaux nice)
    • politique d'ordonnancement temps réel (FIFO ou Round Robin)
    • principe et performances de l'algorithme
    • ordonnancement SMP (Symetrical Multi Processor)
4ème jour
Communication entre tâches (IPC POSIX)
  • Présentation de la norme POSIX
  • Communication entre tâches
    • Mapping de fichier en mémoire
    • Mémoire partagée
    • Files de messages
    • Pipes
  • Synchronisation des tâches
    • sémaphores
    • mutex
    • signaux
  • Les IPCs System V sont décrites en annexe
Exercise :  Mise en place d'un watchdog sur timeout pour fermer les connexions inactives sur un serveur