Choisissez votre langue
Cours de programmation système Linux
Plus de 2 millions d'apprenants dans le monde

Cours de programmation système Linux

Plongez au cœur du noyau Linux et apprenez à écrire des programmes C de qualité professionnelle qui dialoguent directement avec le système d'exploitation. Ce cours couvre les entrées-sorties sur fichiers, les processus, les signaux, les IPC, la gestion de la mémoire, les sockets et le multithreading depuis les bases. Chaque sujet est ancré dans de véritables appels système, du code fonctionnel et les modèles mentaux que les professionnels utilisent chaque jour.

Dedika pour entreprises

Ce que vous allez apprendre:

Vous allez construire 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 en C qui utilisent les API POSIX pour les entrées-sorties sur fichiers, la communication inter-processus et la mise en réseau basée sur les 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 couvrirez é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 fonctionnent de manière fiable dans des environnements de production Linux.

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.

Cliquez ici

Contenu du cours

8 Chapitres • 40 LeçonsDurée entre 4 et 360 heures (vous décidez)

Chapitre 1Voir les détails

Fondements 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 en utilisant les wrappers glibc et l'appel système brut. Relie les fonctions de la bibliothèque C à leurs opérations sous-jacentes dans le noyau.

  • Leçon 2 • Architecture Linux et aperçu 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 de la chaîne d'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 • Essentiels du langage C pour le travail système

    Passe en revue les pointeurs, la disposition de la mémoire, les structures et les opérations binaires essentielles pour le 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. Garantit que chaque étudiant dispose d'une base de construction reproductible avant d'écrire du code.

Chapitre 2Voir les détails

Entrées/Sorties de fichiers et couche VFS

  • Leçon 1 • Opérations sur les répertoires et les métadonnées

    Enseigne les fonctions stat(), le parcours de répertoires 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 programmation.

  • Leçon 2 • Opérations sur les fichiers POSIX

    Couvre les fonctions 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 d'un processus pour des E/S rapides et des données partagées. Relie les E/S de fichier aux concepts de mémoire virtuelle introduits dans les chapitres ultérieurs.

  • Leçon 4 • Descripteurs de fichiers et fichiers ouverts

    Explique la table des fichiers ouverts, les entiers descripteurs de fichier et les structures de données du noyau qui les sous-tendent. Ancre tout le travail ultérieur d'E/S dans un modèle précis de la façon 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 poinçonnage de trous pour les fichiers creux. Étend les compétences de base en E/S à des scénarios de haute performance et d'efficacité de stockage.

Chapitre 3Voir les détails

Processus : création, contrôle et terminaison

  • Leçon 1 • 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 programmation.

  • Leçon 2 • Attente et récupération des enfants

    Enseigne les fonctions wait(), waitpid() et waitid() pour collecter le statut de sortie des enfants et empêcher les zombies. Garantit que les étudiants écrivent des programmes multi-processus sans fuite.

  • Leçon 3 • Exécution de programmes avec exec()

    Explique la famille exec, le passage d'arguments et d'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 des valeurs de retour et l'héritage des ressources après fork(). Construit la base de tous les modèles de programmation multi-processus du cours.

  • Leçon 5 • Identifiants et privilèges des processus

    Couvre les bits setuid/setgid, les ensembles de capacités et l'abandon de privilège pour une conception de processus sécurisée. Prépare les étudiants à écrire des programmes qui gèrent des permissions élevées en toute sécurité.

Chapitre 4Voir les détails

Signaux : envoi, gestion et masquage

  • Leçon 1 • Concepts de signaux et signaux standards

    Introduit les numéros de signaux, les dispositions par défaut et le mécanisme d'envoi du noyau. Établit le modèle conceptuel requis avant d'écrire du code de gestion de signaux.

  • Leçon 2 • Masques de signaux et blocage

    Enseigne sigprocmask(), la manipulation de sigset_t et la protection des sections critiques par blocage. Permet aux étudiants d'éviter les courses de signaux dans les opérations multi-étapes.

  • Leçon 3 • Programmation async-signal-safe

    Identifie les fonctions async-signal-safe 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écurisées dans les gestionnaires.

  • Leçon 4 • Signaux temps réel et signalfd

    Couvre les signaux temps réel POSIX, les garanties de mise en file d'attente et l'interface signalfd() pour une gestion synchrone. Étend les compétences en matière de signaux aux architectures haute fiabilité et pilotées par événements.

  • Leçon 5 • Installation de gestionnaires de signaux

    Couvre la structure sigaction(), les SA_flags et les différences par rapport à la fonction legacy signal(). Enseigne la manière correcte et portable d'installer des gestionnaires qui évitent les conditions de course.

Chapitre 5Voir les détails

Communication inter-processus

  • Leçon 1 • Files de messages POSIX

    Enseigne mq_open(), mq_send(), mq_receive() et la livraison de messages basée sur la priorité. Offre une alternative structurée et typée aux pipes de flux d'octets pour l'IPC orienté message.

  • Leçon 2 • Comparaison et sélection des mécanismes IPC

    Analyse les compromis de débit, de latence, de complexité et de persistance pour tous les types d'IPC. Permet aux étudiants de prendre des décisions architecturales éclairées dans des conceptions système réelles.

  • Leçon 3 • Sémaphores POSIX

    Couvre les sémaphores nommés et non nommés, 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 • Pipes et FIFOs

    Couvre les pipes anonymes, la création de FIFO et le modèle producteur-consommateur pour les processus apparentés et non apparentés. Introduit l'IPC de flux d'octets unidirectionnel comme 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 6Voir les détails

Gestion de la mémoire et mémoire virtuelle

  • Leçon 1 • Utilisation avancée de mmap()

    Montre MAP_ANONYMOUS, MAP_FIXED, les pages géantes et madvise() pour le réglage des performances. Étend les compétences en mmap() des E/S de fichier à la gestion de mémoire générale.

  • Leçon 2 • Allocation de tas et allocateur

    Couvre malloc(), calloc(), realloc(), free() et les 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 des débordements de tampon. Permet aux étudiants de mettre en œuvre des techniques de durcissement de la sécurité au niveau mémoire.

  • Leçon 4 • Architecture de la mémoire virtuelle

    Explique les tables de pages, la disposition 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. Construit les compétences de diagnostic nécessaires pour maintenir une sécurité mémoire de qualité production.

Chapitre 7Voir les détails

Threads POSIX et synchronisation

  • Leçon 1 • Création et cycle de vie des threads

    Couvre pthread_create(), les attributs de thread, l'état de détachement et pthread_join(). Établit le modèle de cycle de vie des threads sur lequel reposent tous les sujets de synchronisation.

  • Leçon 2 • Verrous de lecture-écriture et barrières

    Couvre le rwlock pour les charges de travail à lecture intensive et pthread_barrier pour la synchronisation de phase. Étend la boîte à outils de synchronisation à des 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 les changements d'état sans attente active.

  • Leçon 4 • Mutex et sections critiques

    Enseigne l'initialisation du 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 des modifications concurrentes.

  • Leçon 5 • Stockage local de thread et sécurité

    Explique __thread, pthread_key_t et la sécurité async-signal dans les programmes multi-thread. Enseigne les modèles pour l'état par thread qui évitent le partage et réduisent la contention de verrouillage.

Chapitre 8Voir les détails

Sockets et programmation réseau

  • Leçon 1 • E/S non bloquantes et epoll

    Met en œuvre un serveur piloté par é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 • Principes 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 de base sur laquelle repose toute la programmation réseau.

  • Leçon 3 • UDP et sockets datagramme

    Couvre sendto(), recvfrom() et les modèles de communication sans connexion pour UDP. Compare la livraison non fiable d'UDP avec 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 écho TCP complet et un client avec une gestion et une terminaison de connexion appropriées. Enseigne la communication par flux fiable et l'importance de gérer les envois et réceptions partiels.

Certification

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 faisant la transition vers des plateformes Linux et les API POSIX.

  • Diplômés en informatique comblant le fossé entre les cours universitaires et le travail système en milieu professionnel.

  • Ingénieurs DevOps souhaitant diagnostiquer des problèmes au niveau du noyau sans avoir à deviner.

  • Programmeurs C amateurs prêts à passer des tutoriels à une véritable interaction avec le système d'exploitation.

  • Chercheurs en sécurité qui ont besoin de comprendre les composants 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...
Giulio Carlo
Giulio CarloÉtudiant en Marketing Digital
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.
Mariana Ferres
Mariana FerresÉtudiante en Photographie
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 !
Luciana Alvarenga
Luciana AlvarengaÉtudiante en Design d'Ongles
La plateforme est rapide, simple à utiliser. La diversité du contenu et les vidéos complémentaires aident beaucoup dans l'apprentissage.
André Felipe
André FelipeÉtudiant en Ingénierie de Prompt

Formations principales

FAQ

Qui est Dedika ?

Le certificat est-il valable au Cameroun ?

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