Programmation Système Avancée sur Unix/Linux

Public

Prérequis

Durée de la Formation

  • Total : 5 jours (40 heures)

Objectifs de la Formation

  • Comprendre les concepts avancés des systèmes Unix/Linux.

  • Maîtriser la programmation système en C.

  • Manipuler les appels systèmes et les processus.

  • Gérer la mémoire et les entrées/sorties.

  • Implémenter la communication inter-processus (IPC).

Jour 1 : Introduction à la Programmation Système

Matin : Concepts Avancés de Unix/Linux

  • Introduction à la programmation système

  • Structure et fonctionnement du noyau Unix/Linux

  • Gestion des processus et des threads

  • Espaces utilisateur et noyau

Après-midi : Développement en C pour Unix/Linux

  • Introduction à la programmation en C sur Unix/Linux

  • Compilation et débogage avec gcc et gdb

  • Utilisation des bibliothèques standard (stdio.h, stdlib.h, etc.)

  • Appels systèmes de base (open, read, write, close)

Lab 1 : Premier Programme Système

  • Écrire un programme en C pour lire et afficher le contenu d'un fichier.

  • Utilisation de gcc pour compiler et gdb pour déboguer.

Jour 2 : Gestion des Processus et des Threads

Matin : Gestion des Processus

  • Création et gestion des processus avec fork, exec, wait

  • Terminaison des processus et gestion des signaux (kill, signal, sigaction)

  • Priorités et planification des processus

Après-midi : Programmation avec des Threads

  • Introduction aux threads avec la bibliothèque pthreads

  • Création, synchronisation et destruction de threads

  • Verrous, mutex et conditions

Lab 2 : Manipulation des Processus et des Threads

  • Écrire un programme en C utilisant fork et exec pour lancer un processus enfant.

  • Écrire un programme multi-thread en utilisant pthreads.

Jour 3 : Gestion de la Mémoire

Matin : Allocation Dynamique de Mémoire

  • Allocation dynamique avec malloc, calloc, realloc, free

  • Gestion de la mémoire et détection de fuites

Après-midi : Mémoire Partagée

  • Introduction à la mémoire partagée

  • Utilisation des segments de mémoire partagée avec shmget, shmat, shmdt, shmctl

Lab 3 : Gestion de la Mémoire

  • Écrire un programme en C utilisant malloc et free pour gérer une liste chaînée.

  • Implémenter un programme utilisant la mémoire partagée pour échanger des données entre deux processus.

Jour 4 : Entrées/Sorties et Communication Inter-Processus (IPC)

Matin : Entrées/Sorties Avancées

  • Manipulation des fichiers avec les appels systèmes (lseek, fcntl)

  • Gestion des entrées/sorties asynchrones

Après-midi : Communication Inter-Processus (IPC)

  • Pipes et FIFOs

  • Sockets : introduction et programmation réseau de base

  • Message Queues et Sémaphores

Lab 4 : Entrées/Sorties et IPC

  • Écrire un programme utilisant des pipes pour la communication entre processus parent et enfant.

  • Implémenter une communication simple client-serveur avec des sockets.

Jour 5 : Projet Final et Mise en Pratique

Matin : Conception et Planification du Projet Final

  • Présentation du projet final : implémenter un mini-système de gestion de tâches

  • Discussion et planification des étapes du projet

Après-midi : Développement et Présentation du Projet Final

  • Développement, test et débogage du projet

  • Préparation et présentation du projet aux formateurs et aux autres participants

Lab 5 : Projet Final

  • Création d'un mini-système de gestion de tâches utilisant les concepts appris (processus, threads, IPC, mémoire partagée, etc.)

  • Documenter et présenter le code et les concepts utilisés

Ressources et Supports Pédagogiques

  • Accès à un environnement de développement Unix/Linux (VM ou Docker)

  • Documentation et tutoriels en ligne

  • Support et assistance pendant les labos

Évaluation

  • Évaluations continues à travers les labos pratiques

  • Évaluation finale basée sur le projet réalisé

Conclusion

Cette formation permet aux participants de maîtriser la programmation système avancée sur Unix/Linux, en combinant théorie et pratique à travers des exercices, des labos et un projet final complet.

Last updated