Savoir utiliser les appels système UNIX pour programmer efficacement une application.

Objectifs

Savoir utiliser les appels système Linux pour développer des applications efficaces.

Matériel

Les travaux pratiques du stage Linux embarqué sont réalisés sur:

  • Ordinateur portable ou station de travail sous Debian (RedHat ou Fedora sur demande(*)).

(*) Attention ces modifications peuvent entrainer une modification des themes abordés.

Participants

Cette formation s'adresse aux développeurs d'applications travaillant sous Linux.

Pré-requis

Connaissance du langage C et du système Linux ou UNIX.
De préférence savoir écrire une application en utilisant la libraire C standard.

Programme

INTRODUCTION

  • Historique et standards
  • Les concepts fondamentaux, la programmation système
  • Rappels sur les entrées/sorties open(2), read(2), write(2), ioctl(2), poll(2) et select(2), syscall(2)
  • Les répertoires proc et sys pour l'analyse des process
  • Les fichiers ELF(5), le format des exécutables
  • Travaux pratiques :
  • Prise en main de l'environnement de développement avec une application simple.

PROCESS, UTILISATEUR ET MEMOIRE

  • Les process fork(2), exec(2), politiques d'ordonnancement sched_setscheduler(2), priorités nice(2) vs setpriority(2), affinité sched_setaffinity(2), multi-processeurs membarrier(2), futex(2), NUMA, getcpu(2), set_mempolicy(2)
  • Les namespaces, clone(2), setns(2), unshare(2)
  • La mémoire brk(2), mmap(2), mlock(2), les limitations avec setrlimit(2), les grandes pages
  • Les utilisateurs, credentials, setuid(2), setreuid(2) et les capabilities capset(2)
  • Les daemons, setpgid(2), setsid(2), les groupes de process setgid(2) et les sessions setsid(2)
  • Travaux pratiques :
  • Ecriture d'un lanceur pour sécuriser un daemon

LE SYSTEME DE FICHIER

  • Le système de fichier, les inodes stat(2) et les montages mount(2)
  • La synchronisation des caches sync(2), fdatasync(2), msync(2)
  • Les répertoires mkdir(2), mount(2), les fichiers open(2) et les liens link(2)
  • Advisory locking flock(2), contrôle des descripteurs fcntl(2)
  • Les attributs de fichier chmod(2), ACL et attributs étendus setxattr(2), setfattr(2)
  • Monitoring des événements sur le système de fichier inotify(2)
  • Travaux pratiques :
  • Suivre en temps réel les modifications apportées à un répertoire

LE TEMPS ET LES SIGNAUX

  • Date et heure clockgettime(2), clockadjtime(2)
  • Les timers, interval timers setitimer(2), posix timers create_timer(2), timeout
  • L'interface signal et l'interface sigaction
  • Gestion déterministe des signaux sigaction(2), sigqueue(2), sigaltstack(2), sigpending(2) et des timers timerfd(2)
  • Travaux pratiques :
  • Gestion de signaux et de timers entre deux process

LES THREADS POSIX

  • Introduction, présentation du mapping mémoire
  • Utilisation générale, pthread_create(3), pthread_join(3)
  • La synchronisation de threads pthread_mutex(3) pthread_mutexattr(3)
  • Gestion de la pile pthread_attr_setguardsize(3), pthread_attr_setstacksize(3)
  • Thread cancelation, pthread_cancel(3)
  • Travaux pratiques :
  • Différents exercices sur la création et l'optimisation de threads.

COMMUNICATIONS INTERPROCESS

  • Pipes pipe(2) et dup(2)
  • IPC system V, sémaphores semget(2), mémoire partagée shmget(2) et messages msgget(2)
  • IPC POSIX, sémaphores sem_init(3) sem_post(3), mémoire partagée shm_open(3), mmap(2) ftruncate(2) et messages msgget(2), mq_open(3)
  • Lock de fichiers
  • Travaux pratiques :
  • Ecrire un serveur de fichier en mémoire partagée SV ou POSIX

BIBLIOTHEQUES PARTAGEES

  • Les fondamentaux, LD_LIBRARY_PATH, DT_RPATH, DT_RUNPATH, $ORIGIN
  • Créer une bibliothèque partagée (.so)
  • Utilisation avancée, interposition, dlopen(3) et dlsym(3)
  • Travaux pratiques :
  • Création d'une bibliothèque partagée, fixer le chemin de recherche
Informations

Par personne

Tarifs de groupe, nous consulter
Sessions en présentiel ou en distanciel

Calendrier 2024

Notre calendrier est en cours de mise à jour.

Repas du midi et collations compris dans le prix.

Linux Embarqué
La formation linux embarqué est effectuée sur cartes beaglebone ou raspberry PI.


Site construit par M.N.I.S. en utilisant Bootstrap licence Apache V2 et Glyphicons Free licence CC BY 3.0
janvier 2015