
Cours de programmation système Linux
Plongez au cœur du noyau Linux et apprenez à écrire des programmes C de qualité production qui parlent directement au système d'exploitation. Ce cours couvre les entrées-sorties sur fichiers, les processus, les signaux, l'IPC, la gestion de la mémoire, les sockets et le multithreading depuis les bases. Chaque sujet est ancré dans des appels système réels, du code fonctionnel et les modèles mentaux que les professionnels utilisent quotidiennement.
Ce que vous allez apprendre:
Vous construirez une compréhension précise de la manière dont Linux gère les processus, la mémoire, les fichiers et les connexions réseau au niveau des appels système. Vous écrirez des programmes C qui utilisent les API POSIX pour les entrées-sorties sur fichiers, la communication inter-processus et la mise en réseau par sockets. Vous implémenterez des applications multithreadées et éliminerez les courses aux données à l'aide des primitives de synchronisation pthreads. Vous appliquerez des outils avancés, notamment GDB, strace, Valgrind, AddressSanitizer, perf et io_uring. Vous aborderez également les primitives de sécurité de Linux telles que les espaces de noms, seccomp et les capacités. À la fin, vous aurez les compétences nécessaires pour concevoir, déboguer et optimiser des logiciels système qui s'exécutent de manière fiable dans des environnements Linux de production.
Comment vous étudiez de façon pratique Cours de programmation système Linux
Comment vous pratiquez Cours de programmation système Linux
Pour vous, entreprise, qui souhaitez former votre équipe
Avec Dedika pour les entreprises, le cours inclut des exercices et des exemples adaptés à votre propre activité et aux besoins spécifiques de votre entreprise.
Contenu du cours
8 Chapitres • 40 LeçonsDurée entre 4 et 360 heures (vous décidez)
Chapitre 1MasquerCacher les détailsVoir les détailsFondamentaux de la programmation système Linux
Fondamentaux de la programmation système Linux
Leçon 1 • Introduction aux appels système
Montre comment les programmes utilisateur invoquent les services du noyau via des appels système à l'aide des wrappers glibc et de l'appel système brut. Relie les fonctions de la bibliothèque C à leurs opérations sous-jacentes du noyau.
Leçon 2 • Architecture Linux et présentation du noyau
Couvre l'espace noyau par rapport à l'espace utilisateur, la conception de noyau monolithique et l'abstraction matérielle. Établit le cadre conceptuel dont dépendent tous les sujets de programmation ultérieurs.
Leçon 3 • Compilation, édition de liens et chargement
Explique le pipeline complet des outils, du code source à l'exécutable, y compris l'édition de liens statique et dynamique. Prépare les étudiants à diagnostiquer les erreurs de construction et à comprendre la structure binaire.
Leçon 4 • Notions essentielles du langage C pour le travail système
Révise les pointeurs, l'organisation de la mémoire, les structures et les opérations bit à bit essentielles au code système. Fait le pont entre les connaissances générales en C et les modèles de bas niveau utilisés tout au long du cours.
Leçon 5 • Configuration de l'environnement de développement
Configure un environnement de développement Linux avec GCC, GDB, Make et les bibliothèques essentielles. S'assure que chaque étudiant dispose d'une base de construction reproductible avant d'écrire du code.
Chapitre 2MasquerCacher les détailsVoir les détailsEntrées/Sorties de fichiers et couche VFS
Entrées/Sorties de fichiers et couche VFS
Leçon 1 • Opérations sur les répertoires et métadonnées
Enseigne stat(), le parcours de répertoire et la gestion des liens, y compris les liens physiques et symboliques. Permet aux programmes d'inspecter et de manipuler la structure du système de fichiers par programme.
Leçon 2 • Opérations POSIX sur les fichiers
Couvre open(), read(), write(), lseek() et close() avec tous les indicateurs et modes pertinents. Enseigne les modèles d'utilisation corrects et les pièges courants tels que les lectures et écritures partielles.
Leçon 3 • Fichiers mappés en mémoire
Montre mmap() pour mapper des fichiers dans l'espace d'adressage des processus afin d'obtenir des E/S rapides et des données partagées. Relie les E/S de fichiers aux concepts de mémoire virtuelle présentés dans les chapitres suivants.
Leçon 4 • Descripteurs de fichiers et fichiers ouverts
Explique la table des fichiers ouverts, les entiers des descripteurs de fichiers et les structures de données du noyau qui les sous-tendent. Ancre tout travail d'E/S ultérieur dans un modèle précis de la manière dont le noyau suit les fichiers ouverts.
Leçon 5 • Opérations avancées sur les fichiers
Présente les E/S scatter-gather, la troncature de fichier et le perçage de trous pour les fichiers creux. Étend les compétences de base en E/S à des scénarios haute performance et économes en stockage.
Chapitre 3MasquerCacher les détailsVoir les détailsProcessus : Création, contrôle et terminaison
Processus : Création, contrôle et terminaison
Leçon 1 • Aspects internes et attributs des processus
Examine le PID, le PPID, l'UID, le GID et les champs du descripteur de processus que le noyau maintient. Fournit le vocabulaire et le modèle de données nécessaires pour contrôler les processus par programme.
Leçon 2 • Attente et récolte des processus enfants
Enseigne wait(), waitpid() et waitid() pour collecter l'état de sortie des enfants et empêcher les zombies. Garantit que les étudiants écrivent des programmes multi-processus sans fuites.
Leçon 3 • Exécution de programmes avec exec()
Explique la famille exec, le passage des arguments et de l'environnement, et ce qui est préservé lors d'un exec. Permet aux étudiants de construire des shells et des lanceurs de processus qui remplacent correctement les images de processus.
Leçon 4 • Création de processus avec fork()
Couvre la sémantique de copie sur écriture, la gestion de la valeur de retour et l'héritage des ressources après fork(). Pose les fondations de tous les modèles de programmation multi-processus du cours.
Leçon 5 • Identifiants de processus et privilèges
Couvre les bits setuid/setgid, les ensembles de capacités et l'abandon de privilèges pour une conception sécurisée des processus. Prépare les étudiants à écrire des programmes qui gèrent en toute sécurité des permissions élevées.
Chapitre 4MasquerCacher les détailsVoir les détailsSignaux : Distribution, traitement et masquage
Signaux : Distribution, traitement et masquage
Leçon 1 • Concepts de signaux et signaux standards
Présente les numéros de signaux, les dispositions par défaut et le mécanisme de distribution du noyau. Établit le modèle conceptuel nécessaire avant d'écrire du code de gestion des signaux.
Leçon 2 • Masques de signaux et blocage
Enseigne sigprocmask(), la manipulation de sigset_t et la protection des sections critiques via le blocage. Permet aux étudiants d'empêcher les conditions de course de signaux dans les opérations en plusieurs étapes.
Leçon 3 • Programmation asynchrone-sûre
Identifie les fonctions asynchrone-sûres et les modèles pour écrire des gestionnaires corrects et réentrants. Empêche les bogues subtils qui surviennent lors de l'appel de fonctions non sûres à l'intérieur des gestionnaires.
Leçon 4 • Signaux en temps réel et signalfd
Couvre les signaux en temps réel POSIX, les garanties de mise en file d'attente et l'interface signalfd() pour la gestion synchrone. Étend les compétences en matière de signaux aux architectures haute fiabilité et orientées événements.
Leçon 5 • Installation des gestionnaires de signaux
Couvre la structure sigaction(), les indicateurs SA_flags et les différences par rapport à signal() legacy. Enseigne la manière correcte et portable d'installer des gestionnaires qui évitent les conditions de course.
Chapitre 5MasquerCacher les détailsVoir les détailsCommunication inter-processus
Communication inter-processus
Leçon 1 • Files de messages POSIX
Enseigne mq_open(), mq_send(), mq_receive() et la distribution de messages basée sur la priorité. Fournit une alternative structurée et typée aux tubes en flux d'octets pour une IPC orientée messages.
Leçon 2 • Comparaison et sélection des mécanismes IPC
Analyse les compromis en matière de débit, de latence, de complexité et de persistance pour tous les types d'IPC. Équipe les étudiants pour prendre des décisions architecturales éclairées dans des conceptions de systèmes réels.
Leçon 3 • Sémaphores POSIX
Couvre les sémaphores nommés et anonymes, sem_wait/sem_post et les modèles d'exclusion mutuelle. Fournit la couche de synchronisation nécessaire pour utiliser la mémoire partagée en toute sécurité.
Leçon 4 • Tubes et FIFO
Couvre les tubes anonymes, la création de FIFO et le modèle producteur-consommateur pour les processus apparentés et non apparentés. Présente l'IPC en flux d'octets unidirectionnel comme la primitive de coordination la plus simple.
Leçon 5 • Mémoire partagée POSIX
Montre shm_open(), ftruncate() et mmap() pour créer des régions de mémoire partagée entre processus. Permet un échange de données à haut débit sans copie et prépare les étudiants à la synchronisation basée sur les sémaphores.
Chapitre 6MasquerCacher les détailsVoir les détailsGestion de la mémoire et mémoire virtuelle
Gestion de la mémoire et mémoire virtuelle
Leçon 1 • Utilisation avancée de mmap()
Montre MAP_ANONYMOUS, MAP_FIXED, les pages énormes et madvise() pour le réglage des performances. Étend les compétences de mmap() des E/S de fichiers à la gestion générale de la mémoire.
Leçon 2 • Allocation de tas et allocateur
Couvre malloc(), calloc(), realloc(), free() et les aspects internes de l'allocateur glibc, y compris les arènes. Enseigne les modèles d'allocation corrects et comment éviter la corruption du tas.
Leçon 3 • Protection et permissions de la mémoire
Enseigne mprotect() pour changer les permissions des pages et les pages de garde pour la détection de dépassements de tampon. Permet aux étudiants de mettre en œuvre des techniques de durcissement de la sécurité au niveau de la mémoire.
Leçon 4 • Architecture de la mémoire virtuelle
Explique les tables de pages, l'organisation de l'espace d'adressage virtuel et l'interface /proc/pid/maps. Fournit le modèle mental nécessaire pour comprendre le comportement de l'allocateur et la sémantique de mmap().
Leçon 5 • Détection et correction des erreurs mémoire
Utilise Valgrind, AddressSanitizer et LeakSanitizer pour trouver les fuites, les use-after-free et les débordements. Développe les compétences de diagnostic nécessaires pour maintenir une sécurité mémoire de qualité production.
Chapitre 7MasquerCacher les détailsVoir les détailsThreads et synchronisation POSIX
Threads et synchronisation POSIX
Leçon 1 • Création et cycle de vie des threads
Couvre pthread_create(), les attributs de thread, l'état détaché et pthread_join(). Établit le modèle de cycle de vie des threads sur lequel tous les sujets de synchronisation s'appuient.
Leçon 2 • Verrous de lecture-écriture et barrières
Couvre rwlock pour les charges de travail avec prédominance de lectures et pthread_barrier pour la synchronisation par phases. Étend la boîte à outils de synchronisation aux modèles où le verrouillage exclusif est trop grossier.
Leçon 3 • Variables de condition
Montre pthread_cond_wait(), les réveils intempestifs et le modèle de boucle de prédicat. Permet aux threads d'attendre efficacement des changements d'état sans attente active (busy-waiting).
Leçon 4 • Mutex et sections critiques
Enseigne l'initialisation des mutex, la discipline de verrouillage/déverrouillage et les types de mutex avec vérification d'erreur. Fournit l'outil principal pour protéger les données partagées contre les modifications concurrentes.
Leçon 5 • Stockage local des threads et sécurité
Explique __thread, pthread_key_t et la sécurité asynchrone-sûre dans les programmes multi-thread. Enseigne les modèles d'état par thread qui évitent le partage et réduisent la contention sur les verrous.
Chapitre 8MasquerCacher les détailsVoir les détailsSockets et programmation réseau
Sockets et programmation réseau
Leçon 1 • E/S non bloquantes et epoll
Implémente un serveur orienté événements utilisant des sockets non bloquants, epoll_create() et le mode déclenché par front. Fait évoluer la gestion des connexions au-delà du modèle un thread par connexion.
Leçon 2 • Fondamentaux de l'API Socket
Couvre socket(), bind(), listen(), accept(), connect() et les structures d'adresse pour IPv4 et IPv6. Établit la surface d'API principale sur laquelle toute la programmation réseau s'appuie.
Leçon 3 • Sockets UDP et datagrammes
Couvre sendto(), recvfrom() et les modèles de communication sans connexion pour UDP. Contraste la distribution non fiable de l'UDP avec le TCP et identifie les cas d'utilisation appropriés.
Leçon 4 • Options de socket et fonctionnalités avancées
Enseigne getsockopt()/setsockopt() pour le réglage des tampons, du keepalive et du contrôle de l'algorithme de Nagle. Permet un réglage fin des performances et de la fiabilité des connexions réseau.
Leçon 5 • Programmation client-serveur TCP
Met en œuvre un serveur et un client TCP echo complets avec une gestion et un démontage de connexion appropriés. Enseigne la communication par flux fiable et l'importance de gérer les envois et réceptions partiels.
Votre certificat valide de réussite
Ce cours est pour vous :
Développeurs backend souhaitant comprendre ce qui se passe sous leurs frameworks.
Ingénieurs embarqués effectuant la transition vers des plateformes Linux et les API POSIX.
Diplômés en informatique comblant le fossé entre les cours et le travail sur les systèmes industriels.
Ingénieurs DevOps souhaitant diagnostiquer des problèmes au niveau du noyau sans avoir à deviner.
Programmeurs C amateurs prêts à dépasser les tutoriels et à interagir réellement avec le système d'exploitation.
Chercheurs en sécurité qui ont besoin de comprendre les rouages internes de Linux pour trouver des vulnérabilités.
Ce que disent nos apprenants
Vos cours sont parfaits. J'ai acheté le forfait d'un an et j'ai enfin l'opportunité de suivre divers sujets qui m'intéressent sans avoir besoin de changer de plateforme... je vous remercie pour tout ce que vous faites, je vous ai déjà recommandés à d'autres personnes...

J'aime la façon dont les leçons vont droit au but et comment je peux changer de chapitres et passer le contenu dont je n'ai pas besoin.

J'aime le contenu et la façon dont les vidéos sont présentées et transcrites, ce qui accélère le processus !

La plateforme est rapide, simple à utiliser. La diversité du contenu et les vidéos complémentaires aident beaucoup dans l'apprentissage.

Formations principales
FAQ
Qui est Dedika ?
Le certificat est-il valable en Algérie ?
Les cours sont-ils gratuits ?
Quelle est la charge de travail du cours ?
Comment sont les cours ?
Comment fonctionnent les cours ?
Quelle est la durée des cours ?
Quel est le coût ou le prix des cours ?
Qu'est-ce qu'un cours EAD ou en ligne et comment ça marche ?
Cours PDF




















