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

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.

Dedika pour les entreprises

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 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

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 2Voir les détails

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 3Voir les détails

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 4Voir les détails

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 5Voir les détails

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 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 é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 7Voir les détails

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 8Voir les détails

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.

Certification

Votre certificat valide de réussite

Ce cours est fait 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...
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 en France ?

Les cours sont-ils gratuits ?

Quelle est la charge de travail des 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