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
etgdb
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 etgdb
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
etexec
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
etfree
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