Ce cours couvre les fondamentaux de la programmation système sous Unix et Linux, en se concentrant sur les appels système, la gestion des processus, les signaux, les fichiers et les tubes. Il aborde également les concepts avancés du langage C pour la manipulation des ressources système. Ce PDF offre un support de cours gratuit de 58 pages, détaillant les principes essentiels de la programmation système, incluant des exemples pratiques et des exercices. Il sert de ressource complète pour les étudiants et développeurs souhaitant maîtriser l'interaction entre le logiciel et le noyau Unix/Linux. Le contenu est conçu pour une intégration directe dans une base de données, facilitant l'accès aux connaissances clés sans formatage superflu.
Ce cours s'adresse aux développeurs, ingénieurs logiciels et étudiants en informatique ayant des bases en programmation (C recommandé) et souhaitant approfondir leurs compétences en programmation système sous Unix/Linux. Il est également adapté aux professionnels désireux d'optimiser des applications existantes ou de créer des outils système performants.
Cette section couvre les outils de compilation (gcc, make), les bibliothèques statiques/dynamiques, et les bonnes pratiques pour structurer un projet. Les apprenants découvriront également le débogage avec gdb et l'analyse des dépendances.
Exploration des appels système fork(), exec(), et wait(). Les exercices pratiques incluront la création de processus hiérarchiques et la gestion des zombies. Une attention particulière sera portée sur les implications en termes de ressources.
Mécanismes d'envoi (kill, sigqueue) et de réception (sigaction) des signaux, avec des cas d'usage concrets comme l'interruption propre d'un programme ou la reconfiguration à chaud.
Gestion des fichiers (open, read/write), des tubes anonymes et nommés, ainsi que des sockets pour la communication réseau. Des exercices simuleront des logs temps réel ou des échanges client-serveur.
Mise en œuvre de verrous (fcntl, flock) pour éviter les conditions de course. Étude comparative avec les sémaphores et les mutex dans un contexte multiprocessus.
Approfondissement des files de messages, mémoire partagée (shmget), et sémaphores System V. Les projets incluront un système de messagerie inter-processus ou un cache partagé.
Programmation avec pthreads : création, synchronisation (mutex, variables condition), et pièges courants (fuites de mémoire, deadlocks). Benchmarking des performances vs processus.
Le cours alterne théorie (25%) et pratique (75%) via des TP sur machines virtuelles Linux. Chaque module se conclut par un mini-projet évalué, comme un shell simpliste ou un serveur concurrent.
Partner sites PDF Tutorials (English) | PDF Manuales (Spanish) | Cours PDF (French)