Programmation système et environnement de développement (SLZIOP18)

Enseignant

Eric Valade

Objectif

être capable de coder en langage C des applications (simples) multi processus, multi thread sous Linux.

Qu'est-ce que la programmation système ?

Lorsque l'on dispose d'un système d'exploitation, ce dernier permet de différencier deux types de programmes :

Le système d'exploitation sur lequel vous travaillerez fait partie de la « famille Unix », dont font partie GNU/Linux, Mac OS, Free BSD...

Il faut savoir que le langage C, à partir duquel nous programmerons, a été créé spécialement pour la programmation système, plus précisément pour le développement du système d'exploitation... UNIX. Il est donc particulièrement adapté à ce type de programmation.

La possibilité de consulter les sources du système Linux, de la bibliothèque glibc et de la plupart des applications qui tournent sur cet environnement représente une richesse inestimable aussi bien pour les passionnés qui désirent intervenir sur le noyau, que pour les développeurs curieux de comprendre comment fonctionnent les programmes qu'ils utilisent quotidiennement.

Nombreuses sont les entreprises qui ont compris aujourd'hui tout le parti qu'elles pouvaient tirer de cette ouverture des sources, gage de fiabilité et de pérennité, sans parler de l'extraordinaire niveau de compétences disponible au sein d'une communauté de programmeurs aguerris au contact du code des meilleurs développeurs OpenSource.

Valeurs ajoutées

Indispensable pour un programmeur ; Complète avantageusement un CV

Durée

Prérequis

Le seul prérequis nécessaire à la participation à ce cours est de connaître les bases du langage C. Avoir quelques connaissances sur les systèmes d'exploitation de type Unix est également préférable (bien que de nombreuses explications seront reprises dans ce cours).

Plan

  1. Librairie stantard C ANSI
  2. Processus Linux
  3. Manipulation de fichiers
  4. Communication inter processus (IPC)
    1. Les tubes (pipe)
    2. Les signaux (signal)
    3. Les mémoires partagées (shared memory)
    4. Les files de messages (message queue)
    5. Les sémaphores
    6. Socket - Client/serveur TCP/IP
  5. Thread POSIX